DDD-领域驱动设计

实体(Entity)

具备唯一标识的对象

值对象(Value Object)

用于描述领域的某个方面而本身没有概念标识的对象

服务(Service)

当领域中的某个重要的过程或转换操作不是实体(Entity)或值对象(Value Object)的自然职责时,应该在模型中添加一个作为独立接口的操作,并将其声明为SERVICE。

聚合(Aggregate)

聚合就是一组相关对象的集合,我们把它作为数据修改的单元。每个聚合都有一个根(root)和一个边界(boundary)。边界定义了聚合的内部都有什么。根则是聚合所包含的一个特定实体(ENTITY)。对聚合而言,外部对象只可以引用根,而边界内部的对象之间则可以互相引用。除根以外的其他实体(ENTITY)都有本地标识,但这些标识只在聚合内部才需要加以区别,因为外部对象除了根ENTITY之外看不到其他对象。

工厂(Factory)

当创建一个对象或创建整个聚合时,如果创建工作很复杂,或者暴露了过多的内部结构,则可以使用工厂(Factory)进行封装

仓储(Repository)

负责持久化和查询,实体或者值对象 或者聚合

领域事件(Domain Event)

领域中所发生的一些动作行为是我们需要关系的

分层架构

image

用户界面层

负责向用户显示信息和解释用户指令。这里指的用户可以是另一个计算机系统,不一定是使用用户界面的人

应用层

定义软件要完成的任务,并且指挥表达领域概念的对象来解决问题。这一层所负责的工作对业务来说意义重大,也是与其他系统的应用层进行交互的必要渠道

领域层

负责表达业务概念,业务状态信息以及业务规则。尽管保存业务状态的技术细节是由基础设施层实现的,但是反映业务情况的状态是由本层控制并且使用的。领域层是业务软件的核心

基础设施层

为上面各层提供通用的技术能力:为应用层传递消息,为领域层提供持久化机制,为用户界面层绘制屏幕组件,等等。基础设施层还能够通过架构框架来支持4个层次间的交互模式

posted @ 2022-03-13 18:45  Ranger-dev  阅读(75)  评论(0)    收藏  举报