面向领域开发示例
最近面向领域的知识挺火我也来插一腿。说说我平时做项目时候用到的开发方式以下代码为伪代码主要展示一下我现在的开发方式供大家讨论系统中不考虑持久、UI、AOP和IOC等方面内容。说到.NET社区的“开发方式”就不得不提一下Petshop了可以说Petshop真是影响了.NET的一代人。以至于三层成了.NET这边流行的标准的开发方式。但是要说一下Petshop是数据库驱动业务核心的过程式开发也正是它也毒害了一批人。下面我们以一个最常见也是大家比较熟的下定单来简单看一下。首先是系统的几个领域类应牧章的要求加上类之间的关系这里的关系很简单Order与OrderItem是一对多关系OrderItem与Product是一对多关系定单提交业务Order对象是个“根”我也就不解释了发下几个类的代码里面有注解。大家看一下就明白了。这里我们要强调的是类关系还有一个根的概念。每个业务流都会有一个根。而根不是整个系统唯一确定的是而是根据对象在哪个业务范围内而决定的。显然这里面是Order定单对象。/// summary/// 商品/// /summarypublic class Product{/// summary/// 键/// /summarypublic int SysNo { get; set; }/// summary/// 商品名称/// /summarypublic string ProductName { get; set; }/// summary/// 商品价格/// /summarypublic decimal ProductPrice { get; set; }private Category _category;/// summary/// 所属分类/// /summarypublic Category Category{get { return _category; }set { _category value; }}}/// summary/// 定单/// /summarypublic class Order{#region 属性/// summary/// 键/// /summarypublic int SysNo { get; set; }/// summary/// 定单ID/// /summarypublic string OrderId { get; set; }/// summary/// 定单金额/// /summarypublic decimal OrderAmount { get; set; }/// summary/// 运费金额/// /summarypublic decimal ShipAmount { get; set; }/// summary/// 支付金额/// /summarypublic decimal PayAmount { get; set; }/// summary/// 定单状态/// /summarypublic int OrderStatus { get; set; }/// summary/// 定单时间/// /summarypublic DateTime OrderTime { get; set; }private ListOrderItem _orderItems new ListOrderItem();/// summary/// 定单明细/// /summarypublic ListOrderItem OrderItems{get { return _orderItems; }set { _orderItems value; }}#endregion#region 方法/// summary/// 计算定单金额/// /summary/// returns/returnspublic decimal GetOrderAmount(){decimal amount 0;//计算商品金额foreach (var item in OrderItems){amount item.GetAmount();}//加上运费amount ShipAmount;return amount;}#endregion}/// summary/// 定单明细/// /summarypublic class OrderItem{#region 属性/// summary/// 键/// /summarypublic int SysNo { get; set; }private Product _product new Product();/// summary/// 购买商品/// /summarypublic Product Product{get { return _product; }set { _product value; }}/// summary/// 购买价格/// /summarypublic decimal ProductPrice { get; set; }/// summary/// 购买数量/// /summarypublic int ProductQty { get; set; }#endregion#region 方法/// summary/// 主算小计金额/// /summary/// returns/returnspublic decimal GetAmount(){return this.ProductPrice * Convert.ToDecimal(this.ProductQty);}#endregion}/// summary/// 商品库存/// /summarypublic class Inventory{#region 属性/// summary/// 键/// /summarypublic int SysNo { get; set; }/// summary/// 更新键用来保证更新的数据之前没有别人更新过。对应表的ModKey列,每更新一次更新Guid值/// /summarypublic Guid ModKey { get; set; }private Product _product new Product();/// summary/// 商品/// /summarypublic Product Product{get { return _product; }set { _product value; }}/// summary/// 库存数量/// /summarypublic int Qty { get; set; }#endregion#region 方法/// summary/// 验证库存是否有库存/// /summary/// returns/returnspublic bool ValidInventory(){if (this.Qty 0)return true;elsereturn false;}/// summary/// 减库存/// /summary/// param nameqty/parampublic void MinusInventory(int qty){if (this.Qty qty)throw new Exception(库存不足);this.Qty - qty;}#endregion}

相关新闻

AI学习机选购避坑指南:诊断、教学、陪伴三层能力实测

AI学习机选购避坑指南:诊断、教学、陪伴三层能力实测

1. 为什么“哪款最好”这个问题本身就有陷阱?我用过6台不同品牌的AI学习机,从最早给孩子试水的入门款,到后来自费买来拆解研究的旗舰型号,还帮邻居、同事家孩子调试过不下20台。说实话,每次听到家长问“哪款AI学习机最…

2026/7/4 17:20:09阅读更多 →
侧信道分析实战:基于启发式算法破解DES加密硬件

侧信道分析实战:基于启发式算法破解DES加密硬件

1. 项目概述:当加密算法遇上“旁门左道”在信息安全领域,数据加密标准(DES)虽然已不再是现代高强度应用的首选,但它作为密码学发展史上的里程碑,其设计思想和实现方式至今仍是学习侧信道分析(SC…

2026/7/4 17:20:09阅读更多 →
Monk AI:面向Kaggle竞赛的声明式机器学习工作流

Monk AI:面向Kaggle竞赛的声明式机器学习工作流

1. 项目概述:用 Monk AI 踏入 Kaggle 竞赛的真实门槛Kaggle 是全球数据科学从业者的练兵场,但对绝大多数刚入门的朋友来说,它更像一座布满迷雾的城堡——你清楚里面藏着模型调优的秘籍、真实业务的数据集、还有能写进简历的金牌徽章&#xff…

2026/7/4 17:20:09阅读更多 →
GPTs vs 人工标注:真实金融工单场景下的性能对比实战

GPTs vs 人工标注:真实金融工单场景下的性能对比实战

1. 项目概述:一场真实场景下的文本标注能力硬碰硬最近在给一个金融风控模型做数据清洗时,我手头有3200条用户投诉工单,需要打上“欺诈意图”“服务不满”“系统故障”“政策误解”四类标签。按老办法,得找外包团队人工标——每人每…

2026/7/4 20:40:45阅读更多 →
逆向工程实战:58同城App密码加密算法解析与Python复现

逆向工程实战:58同城App密码加密算法解析与Python复现

1. 项目概述与核心价值最近在和一些做数据采集、自动化测试的朋友交流时,经常听到一个话题:现在很多App的接口,尤其是涉及用户登录、交易等核心业务的接口,加密和风控做得越来越复杂,逆向分析的难度直线上升。这确实是…

2026/7/4 20:40:45阅读更多 →
Fast-GitHub终极指南:如何让GitHub下载速度提升10倍的免费解决方案

Fast-GitHub终极指南:如何让GitHub下载速度提升10倍的免费解决方案

Fast-GitHub终极指南:如何让GitHub下载速度提升10倍的免费解决方案 【免费下载链接】Fast-GitHub 国内Github下载很慢,用上了这个插件后,下载速度嗖嗖嗖的~! 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 对于…

2026/7/4 20:40:45阅读更多 →
TwelveMonkeys ImageIO:Java图像格式处理的终极解决方案

TwelveMonkeys ImageIO:Java图像格式处理的终极解决方案

TwelveMonkeys ImageIO:Java图像格式处理的终极解决方案 【免费下载链接】TwelveMonkeys TwelveMonkeys ImageIO: Additional plug-ins and extensions for Javas ImageIO 项目地址: https://gitcode.com/gh_mirrors/tw/TwelveMonkeys TwelveMonkeys ImageIO…

2026/7/4 20:40:45阅读更多 →
合同管理系统的实施-开发费用问题

合同管理系统的实施-开发费用问题

此前《从纸质台账到数智中台:合同管理系统的演进与未来》一文,梳理了合同管理系统的发展脉络。从功能迭代角度来看,合同管理系统是依托 OA 无纸化办公、企业信息化的基础需求,逐步拆分独立出来的专业化管理软件。在专业化演变进程…

2026/7/4 20:40:45阅读更多 →
珠宝店做网站就找我!一站式解决展示、销售、定制全流程

珠宝店做网站就找我!一站式解决展示、销售、定制全流程

模版案例钻石与宝石展示网站 - 专业珠宝行业模板 开珠宝店是不是总遇到这些问题? 线下客流减少,只能守店等客 微信沟通效率低,产品细节说不清 钻戒定制反复改,费时又费力 老客户流失,活动通知难触达 想做线上&…

2026/7/4 20:35:45阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/7/4 14:25:39阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/7/4 14:57:00阅读更多 →
端到端自动驾驶:从GTC‘26看工程可信落地的核心逻辑

端到端自动驾驶:从GTC‘26看工程可信落地的核心逻辑

1. 项目概述:当算法工程师走进GTC26展厅,看到的不是芯片,而是“端到端”的呼吸节奏“端到端”这三个字,在GTC’26现场出现的频率,高得像NVLink带宽测试时的峰值曲线——它不再是一个论文里的技术路径选项,而…

2026/7/4 0:02:48阅读更多 →
缺牙修复科普:常见义齿类型与选择参考

缺牙修复科普:常见义齿类型与选择参考

缺牙修复科普:常见义齿类型与选择参考牙齿缺失是中老年人群中较为常见的口腔问题,不仅会造成咀嚼不便、进食受影响,长期还可能对营养摄入与日常社交带来困扰。义齿是改善缺牙问题的常用方式,目前市面上的义齿种类较多,…

2026/7/4 0:02:48阅读更多 →
STM32F091RC与LTC6904实现高精度方波信号生成

STM32F091RC与LTC6904实现高精度方波信号生成

1. 项目概述:LTC6904与STM32F091RC的精准方波生成方案在嵌入式系统开发中,精确的时钟信号和定时控制往往是项目成败的关键。LTC6904作为一款低功耗、高精度的可编程振荡器芯片,与STM32F091RC这款ARM Cortex-M0内核微控制器的组合,…

2026/7/4 0:02:48阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/4 1:16:56阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/4 2:33:55阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/4 2:33:55阅读更多 →