DDD主要是解决两个方面的耦合,一是业务和技术的耦合,技术不参与业务,技术支持与业务。二是业务和业务的耦合,划分领域职责,业务放发哦各自的领域中。用解耦的这种方式来应对大码的“大泥球”。
DDD的关键词:
面向抽象编程(加入防腐层)应对需求变化
领域划分 值类型 领域 聚合根 聚合(Order, OrderItem)
限界上线文(逻辑上的区分)
抽出业务,屏蔽技术
设计原则:高内聚低耦合 单一职责
学习业务,减少技术人员和user沟通障碍,
四层架构(Infrastructure ,Domain ,Application,Interfaces)
工厂 仓库
适用的项目:大的而且复杂的系统,主要是老项目的迁移
小系统 简单的功能没有必要使用
短时间内难以体现价值
贫血模型:类里面只有属性和set get, 贫血失忆症
充血模型: 在实体里面加入对应的操作,让实体更加丰满。一看就能知道这个实体会发生哪些操作。
业务: DDD 业务 指造成实体状态发生变化的过程,
加入防腐层,改造之后:
MVC VS DDD
改造: