第1章 分层
分层的好处
1、在无需过多了解其他层次的基础上,可以将某一层作为一个有机的整体来理解。
2、可以替代某层的具体实现,只要前后提供的服务相同即可。
3、可以将层次之间的依赖性减到最低。
4、分层有利于标准化工作。TCP和IP就是关于它们各自层次如何工作的标准。
5、一旦构建好了某一层次,就可以用它为很多上层服务器提供支持。TCP同时被FTP、HTTP、SSH使用。
6、层次并不能封装所有东西,有时会带来级联修改。
7、过多的层次会影响性能。
三个基本层次
1、表现层 提供服务、显示信息
2、领域层 逻辑系统中真正的核心
3、数据源层 与数据库、消息系统、事务管理器及其他软件包通信
伴随着分层,有一条关于依赖性的普遍原则:领域层和数据源层绝对不要依赖于表现层
第二章 组织领域逻辑
三种模式
1、事务脚本
概念:从表示层获得输入、进行校验和计算处理、将数据存储到数据库中以及调用其他系统的操作等。然后,该过程将更多的数据返回给表示层,中间可能要进行大量的计算来组织和整理返回值。
优点:(1)大多数开发者都能理解的简单过程模型。(2)面向过程的思想
缺点:当领域逻辑的复杂程度增加时,有若干个事务做相似的工作,通常多个脚本会包含相同的代码,提取出来组织成公共的子例程可以消除这种情况,但在许多时候,消除副本比较棘手,是的程序没有清晰的结构。
2、领域模型
概念:不再由一个过程来控制用户某一动作的逻辑,而是由每一个对象都承担一部分相关的逻辑。
优点:当增加新的功能时,只需增加相应的新策略对象即可,而使用事务脚本的判断逻辑中增加许多新的条件。该模型是面向对象的。
理解:在开发一个系统时,不是先考虑数据库,而是考虑领域对象会有哪些,通过类的关系来表示业务对象之间的关系。Grails就是面向领域的Web开发框架。
3、表模块
概念:表模块中的类的对象处理表中的所有记录,而领域模型的一个对象代表表中的一行记录
理解:做一个系统,首先考虑实体数据,然后进行数据库设计,再实现对这些数据库表进行增删改查。整个系统的开发流程为:需求分型->数据库设计->业务逻辑的实现
总结
对于三种模式,个人认为适用于不同规模的应用开发,简单的小程序可以考虑事务脚本模式将会节省设计的工作量,对于业务规模不大、领域逻辑变化不大的应用可使用表模块、而对于业务复杂、需求多面的应用建议使用更加面向对象的领域模型进行设计。