分层
在分解复杂的软件系统时,软件设计者用得最多的技术之一就是分层。
当用分层的观点来考虑系统时,可以将各个子系统想象成按照“多层蛋糕”的形式来组织,每一层都依托在其下层之上。在这种组织方式下,上层使用了下层定义的各种服务,而下层对上层一无所知。另外,每一层对自己的上传隐藏其下层的细节。因此,第4层使用第3层的服务,第3层使用第2层的服务,第4层无需知道第2层的细节。(当然,并非所有的分层架构都这么隔绝,但绝大多数都是不透明的,或至少是几乎不透明的。)
然而,分层架构中最困难的问题是决定建立哪些层次以及每一层的职责是什么。
表现逻辑处理用户与软件间的交互。
数据源逻辑主要关注与其他系统的交互,这些系统将代表应用完成相关的任务。
最后一部分就是领域逻辑,也称为业务逻辑。
伴随着分离,还有一条关于依赖性的普遍原则:领域层和数据源层绝对不要依赖于表现层。也就是说,在领域层和数据源层的代码中,不要出现调用表现层代码的情况。
使用领域逻辑时,其中一个最困难的部分就是区分什么是领域逻辑,什么是其他逻辑。一种不太正规的测试办法就是:假想向系统中增加一个完全不同的新层,例如为Web应用增加一个命令行界面层。如果在这个过程中,发现需要重复实现某些功能,则说明有一些本应该在领域层实现的逻辑,现在在表现层实现了。