第二部分:分层

     要想创建出能够处理复杂任务的程序,需要做到关注点分离---使设计中的每个部分都得到单独的关注。在分割的同时,也需要维持系统内部复杂的交互关系。
    Layered architecture 的基本原则是层中的任何元素都仅依赖于本层的其他元素或其下层的元素。向上的通信必须通过间接方式进行。
    分层的价值在于每一层都只代表程序中的某一特定的方面。这种限制使每个方面的设计都更具内聚性,更容易解释。
    尽管 Layered architecture的种类很多,但是大多数成功的架构使用用的都是这4个概念层的变体:用户界面层(表示层)、应用层、领域层(模型层)、基础设施层。


    应用层:定义软件要完成的任务(有那些能力或者功能),并且指挥表达领域概念的对象来解决问题。是与其他系统的应用层进行交互的必要渠道。应用层要尽量的简单,不包含业务规则或者知识,而只为下一层中的领域对象协调任务,分配工作。使它们互相协助。


   领域层(模型层):负责表达业务概念,业务状态信息以及业务规则。尽管保存业务状态的技术细节是由基础设施层实现,但是反应业务情况的状态是由本层控制并使用的。领域层是业务软件的核心、是模型的精髓、是领域模型(领域模型是一系列概念的集合)以及与其他直接关联的设计元素的表现,它由业务逻辑的设计和实现组成


   基础设施层:为上面各层提供通用的技术能力:为应用层传递消息(MQ、事件等),为领域层提供持久化机制(资源库),为用户界面层提供汇总录屏组件。

你可能感兴趣的:(DDD,领域驱动设计,设计规范,程序人生)