c#编程细节(七)之 DDD
DDD,是一种系统分析设计的思想和方法论的组合
说的更直白一些: 大型项目的分析设计方式+方法论
需求人员-设计人员-开发人员,大家都能懂的语言,发现领域,设计成领域模型;
然后再根据领域模型去驱动设计代码实现
想一想以前的实际方式,一个博客项目,第一先想到会有什么数据,根据数据类型设计数据库,然后再往上逐步构建代码
首先说一下分析设计方式
我们首先要理解领域、拆分领域、细化领域,例如一个商城项目
我们可以分为如下几个领域
然后营销还可以继续划分:促销策略,支付策略,就是根据业务规则/场景/流程,不断的去细化
业务规则/场景/流程,不断的去细化
更要求对业务的熟练,所以开发人员很难理解
领域驱动设计的经典分层架构
UserInterface用户展现层:
请求应用层以获取用户所需要展现的数据;
发送命令给应用层要求其执行某个用户命令
Application应用层:
很薄的一层,定义软件要完成的所有任务。对外为展现层提供各种应用功能(包括查询或命令),对内调用领域层(领域对象或领域服务)完成各种业务逻辑,应用层不包含业务逻辑。
Domin领域层:
负责表达业务概念,业务状态信息以及业务规则,领域模型处于这一层,是业务软件的核心。
Infrastrucyure基础设施层:
本层(相当于以前三层架构时的)为其他层提供通用的技术能力;提供了层间的通信;为领域层实现持久化机制;总之,基础设施层可以通过架构和框架来支持其他层的技术需求;