第九章 领域逻辑模型
整个书好像只有这一章是介绍领域逻辑模型,其他基本上O/R Mapping相关(笔墨最多),表现层,分布对象等等。对于领域逻辑,其设计、模式在大的“事务脚本(Transaction Script)”、“领域模型(Domain Model)”、“表模块(Table Module)”确定以后,需要应用的设计模式就是那些经典的23个模式了。
坦白来讲,这本书到目前为止,前9章都看了有2遍,有些可以理解,有些还是不能理解。领域逻辑模型这一章,对于书中的话、对于程序和例子,都可以明白,但对于思想、该怎么使用还是似懂非懂。以前做桌面系统多一些,设计和编码多用的是Observer,Adapter之类的模式;对于非桌面系统,基本基于VB和ASP,都是2层系统,复杂一些,会把一些对象涉及的操作用对象完全封装起来,可能间于事务脚本模式和表模块模式之间,所以,实作经验的不足应该是理解偏差的主要原因吧。
事务脚本
事务脚本比较好理解,简单来说,就是将大多是事务,以过程的形式封装起来,然后在其他层(表现层)被调用,实现一定功能(输入、查询、更新数据库)。组织事务脚本需要通过合理的方法将其模块化,例如对于数据库连接等操作,可以独立出来,成为公用的过程。
事务脚本可以通过一定的方法组织成类。事务脚本的优势在于简单有效。例如,对于一个留言本,使用Add、GetDetail等方法即可封装数据库操作,Web界面则直接调用其即可。
领域模型
领域模型是一张对象(数据、业务规则、实体等)连接成的网。
对于简单领域模型,一般来说,一个数据库表对应一个对象;复杂领域模型则由很多细粒度对象组成,通过继承、策略和其他设计模式,模拟复杂的领域逻辑。复杂领域模型需要使用数据映射器。
表模块
按照我自己的理解,表模块可以简单看作通过一系列的类来模拟业务,但操作的对象是封装了的一个数据集(所谓实体对象),前一点和领域模型相同,后者则简化了与数据库的连接,不需要数据映射器。因此,表模块一般是对于数据库的一个表使用一个表模块。