- 实体
- 值对象
- 服务
- 模块
-
聚合
- 首先,要删除模型中非本质的关联关系
- 以通过增加约束的方式来消减多重性
- 很多时候双向关联可以被转换成非双向的关联
- 工厂
- 资源库
-
分层架构
- UI
- 应用层
- 领域层
- 基础设施层
- 传统oo泛型的升华和探索
- 没有丰富的领域知识不可能做出复杂的银行业业务软件
- 让软件成为领域的反射(映射)
- 我们需要用模型来交流
- 分析不能预见模型中存在的某些缺陷以及领域中的所有的复杂关系
- 紧密关联领域建模和设计。模型在构建时就考虑
到软件和设计
- 如果设计或者设计中的核心部分不能映射到领域模型,模型基本上就没有什么价值
- 如果值对象是可共享的,那么它们应该是不可变的。
- 当领域中的一个重要的过程或者变化不属于一个实体或者值对象的自然职责时,向模型中增加一个操作,作为一个单独的接口将其声明一个服务
- 模块被用来作为组织相关概念和任务以便降低复杂性的一种方法
- 为软件代码应该具有高层次的内聚性和低层次的耦合度
- 模块和它们的名字应该能反映对领域的深层理解。
- 聚合是一个用来定义对象所有权和边界的领域模式
- 工厂和资源库是另外的两个设计模式,用来帮助我们处理对象的创建和存储问题
- 如果一个对象不能被正常创建,将会产生一个异常,确保没有返回一个无效值
- 把所有的对象存储和访问细节委托给资源库
- 资源库可能会在本地缓存对象,但更常见的情况是需要从一个持久化存储中检索它们
- 工厂是“纯的领域”,而资源库会包含对基础设施的连接,如数据库。
- 工厂创建新的对象,而资源库应该是用来发现已经创建过的对象