The DoYouHaoBaby PHP Framework中文开发文档手册
Copyright(c) DoYouHaoBaby.NET All Rights Reserved.
[ 分层架构 ]

当我们创建一个软件应用时,这个应用的很大一部分是不能直接跟领域关联的,但它们是基础设施的一部分或者是为软件服务的。最
好能让应用中的领域部分尽可能少地和其他的部分掺杂在一起,因为一个典型的应用包含了很多和数据库访问,文件或网络访问以及
用户界面等相关的代码。

因此,将一个复杂的程序切分成层。开发每一个层中内聚的设计,让每个层仅依赖于它底下的那层。遵照标准的架构模式以提供层的
  低耦合  。将领域模型相关的代码集中到一个层中,把它从用户界面、应用和基础设施代码中分隔开来。释放领域对象的显示自己、
保存自己、管理应用任务等职责,让它专注于展现领域模型。这会让一个模型进一步富含知识,更清晰地捕获基础的业务知识,让它
们正常工作。

一个通用领域驱动设计的架构性解决方案包含4 个概念层:

层名字 描述
用户界面/展现层 负责向用户展现信息以及解释用户命令。
应用层 很薄的一层,用来协调应用的活动。它不包含业务
逻辑。它不保留业务对象的状态,但它保有应用任
务的进度状态。
领域层 本层包含关于领域的信息。这是业务软件的核心所
在。在这里保留业务对象的状态,对业务对象和它
们状态的持久化被委托给了基础设施层。
基础设施层 本层作为其他层的支撑库存在。它提供了层间的通
信,实现对业务对象的持久化,包含对用户界面层
的支撑库等作用。


将应用划分成分离的层并建立层间的交换规则很重要。

领域层应该关注核心的领域问题。它应该不涉及基础设施类的活动。用户界面既不跟业务逻辑紧密捆绑也不包含通常属
于基础设施层的任务。

在很多情况下应用层是必要的。它会成为业务逻辑之上的管理者,用来监督和协调应用的整个活动。