第二章 组织领域逻辑
领域逻辑的3种模式:
1) 事务脚本:一个动作由一个过程驱动,系统由很多过程组成;
2) 领域模型:通过对象,或者业务中的名词来驱动领域逻辑,各个对象负责各自的责任。通过增加对象来应付复杂性。
3) 表模块:与数据集一起工作。例如,一个模型有合同、产品、收入确认类,但领域模型对数据库中的每一个合同都有一个合同的实例,而表模块只有一个公共的合同类实例(一个数据集?)。
对于表模块,优势在于可以拥有领域模型的部分好处(面向对象?),但无法使用领域模型中可以组织细粒度逻辑结构的技术(?),但表模块可以很好的和GUI结合,甚至使用数据感知技术,可以在表模块之上进行查询等操作。
服务层:处理领域逻辑的常见方法是将领域逻辑细分为2层。独立出服务层,置于底层的领域模型或表模块之上。表现层与领域层的交互完全通过服务层。
服务层可以很简单,只是底层的一个外观,Duwamish的Facade层应该就是这样的服务层,一者简化GUI对底层逻辑的调用,二者可以隔离二者;另外一种是服务层包含大多数的事务脚本,而下层变得较为简单。
以上的混合是所谓“控制器—实体”风格。