领域逻辑的组织可以分为三种主要的模式:事务脚本、领域模型、表模块。
1.事务脚本:事件驱动的处理过程。根据用户界面操作、外部调用动作,从表示层获取输入,进行验证和计算,将数据存储到数据库或数据文件中的处理过程。基本方式是每个过程(一个或多个相关函数,可理解为脚本)对应于用户可能做的一个动作。其主要优缺点是:
a.简单容易理解,就是动作驱动、过程化处理;
b.能够与一个使用“行数据入口”或“表数据入口”的简单数据源层很好地协作;
c.事务边界明显:始于脚本的打开,终于脚本的关闭;
d.容易出现代码副本,使得程序结构不清晰;
e.没有对数据进行必要的抽象。
2.领域模型:将业务领域中的实体建模为对象,由这些对象来执行相关业务逻辑。通常还可以独立出一个服务层,向表示层提供更易理解的API,同时也可以进行事务和安全控制。服务层应当在必要时才使用,且应尽量最小化。
3.表模块:设计为与记录集一起工作。与领域模型的区别在于:领域模型中对象通常对应于一条记录,而表模块中的对象通常对应整个表。无法在表模块中应用继承、策略等面向对象设计模式。
表数据入口:类似于DAO和DBHelper,通常是对SQL语句的集中封装;
行数据入口:与表数据入口的区别在于,封装SQL的类本身含有对应行的数据库值域。