领域驱动设计

  

表示层(Presentation)

负责向用户展现信息以及解释用户命令。

    1. 请求应用层以获取用户所需要展现的数据;

    2. 发送命令给应用层要求其执行某个用户命令;

应用层(Application)

应用层主要用于协调不同领域对象之间的动作或领域模型与基础结构层组件之间的工作,以完成一个特定的、明确的系统任务。

对上为表示层提供各种应用功能(包括查询或命令),对下调用领域层(领域对象或领域服务)完成各种业务逻辑。

领域模型层(Domain Model)

将业务逻辑高度内聚到领域层,所以领域层是整个系统的核心,它只与实际业务相关,不关心任何技术细节(基础设施层)。

  • 实体

  实体在领域模型中非常重要,有标识来区分的对象称为实体

  • 值对象

  和实体不同,值对象没有标识,不需要跟踪值对象的状态,而且值对象非常容易创建和丢弃。

  • 领域层服务

  在设计领域模型时,有些业务行为不适合放在任何一个领域对象中,或者该业务行为需要联合多个领域实体才能完成,那么我们就把其放在对应的领域服务中。领域层服务负责和领域中的实体对象、值对象以及其他领域层对象交互。

  • 聚合(Aggregate)

  聚合通常定义一组关联的对象,以及对象和关系之间的边界,作为一个数据更改的单元处理。每个聚合只有一个聚合根(实体对象)。

  • 仓储(Repository)

  为每一个聚合根对象创建一个仓储,表示该种类型的所有对象为一个概念的对象集合,对仓储的访问通过类似集合的接口。仓储的要点是让开发人员将精力聚焦在领域模型逻辑上,并将真实的数据访问隐藏在仓储接口后面。

基础设施层(Infrastructure)

  基础设施层包含任何类型的框架、数据访问代码或者公共的帮助方法等,是纯技术的一层。

 

 

posted @ 2018-08-08 17:17  Mark.Yang  阅读(210)  评论(0)    收藏  举报