宽泛的把操作分为两个大的类别:一个是命令,一个是查询。查询时获取信息,命令是修改系统数据。
在多个规则的相互作用和计算的组合所产生的的结果是很难预测的。
【函数概念】
函数的概念:返回结果而不产生修改作用的操作成为函数,可以被调用多次,每次返回相同结果值。
因此:尽可能的把程序的逻辑放到函数中,因为函数是只返回结果而不产生明显的修改操作。
严格的把命令(引起显性状态改变的方法)隔离到不返回领域信息的,非常简单的操作中。
当发现一个非常适合承担复杂逻辑职责的概念时,就可以把这个复杂逻辑迁移到Value Object中。
【高内聚、低耦合】高内聚、低耦合是这个基本原则,既适用于代码也适用于概念。每次做决定时,都要问自己
这是根据当前模型和代码中的特定关系做出的权宜之计,还是反映了底层领域的某种轮廓。
【相互依赖】相互依赖使得模型和设计变得难以理解、测试和维护。相互依赖很容易越积越多。如果有一个依赖关系,我们必须要同时考虑两个类以及他们之间的关系的本质。设计会随着依赖关系的增加变得越来越难以理解,这加重了我们的思考负担,从而限制了开发人员能处理设计的复杂度。
例如:为了理解一个对象而必须要保留有相互依赖关系的其他的概念在大脑中都会增加思考负担。
仔细选择模型和设计的过程就是要减少依赖关系的过程,对于每个依赖关系我们都应该提出质疑,直到证明它缺失表示对象的基本概念。
【低耦合】是对象设计的一个基本要素,尽可能的保持低耦合,把所有无关的概念提取到对象之外,这样类就变得完全独立了,这就适合我们可以单独研究和理解它了。
【开闭操作】
当我们对集合中的任意两个元素组合时,结果仍在这个集合中,这个叫开闭操作。
____ The Math Forum,Drexel University