DDD相关书籍:《Domain-driven design:领域驱动设计:软件核心复杂性应对之道》 ,Martin Flower的《企业应用架构模式》,effective java,实现领域驱动设计
传统的三层架构:
表示层(MVC)
业务逻辑层(service、serviceimpl)
数据访问层(dao、daoimpl、orm)
DDD的经典四层:
表示层(mvc)
应用层
领域层(实体、值对象、聚合(领域模型)仓储接口-依赖倒置、领域服务)
基础设施层(仓储实现、orm)
分层原则
以分布式和平行多人开发为基础,每个层应当充分划分自身职责,不做多余的工作。如UI层不能混入业务逻辑控制内容。
以业务领域为核心,其它层依赖业务层。
业务层应当高度封装业务逻辑,对UI层以应用层提供交流方式。
什么环境下考虑DDD实现架构?
1、业务逻辑中大型规模
2、应对分布式(需要扩充DTO)
3、应对外部系统(依赖倒置、扩充适配器、防腐层)
4、应对角色多变(需要扩充DCI ,即数据、上下文、交互模式)
DDD设计模式下考虑的扩充
1、提高查询命令性能:CQRS(命令查询职责分离)
2、IOC
3、AOP
4、工厂
DTO的概念
用于视图层和领域层交互
只有set get,将视图层和领域层对象隔离
对象模型的两类
贫血模型 、充血模型
领域模型概念
聚合 聚合根 基本责任 交互责任(角色责任)
核心领域、通用子领域、领域前景说明
用工厂完成实体或聚合不能自理的工作。
聚合对象通讯
消息依赖、领域事件(用于强一致性以外的功能可考虑使用,例如转账后发送消息,消息不会影响业务结果),业务场景复杂情况下可减低复杂度,并实现最终一致性。另外可以提高分布式性能,松散耦合。
设计分析需要知道的理论
四色原型
迪米特法则(最少知道原则)
适配模式
装饰模式
工厂模式
不变性
建模几种必备图
用例图
类图
时序图
数据库关系图
可参考借鉴的模式
共享内核模式,客户/供应商团队模式,Conformist(跟随者)模式,防护层模式,独立自主模式,开放主机模式,公共语言模式