Please enable JavaScript.
Coggle requires JavaScript to display documents.
领域驱动设计 - Coggle Diagram
领域驱动设计
基础概念
界限上下文
从领域逻辑的角度,即根据业务知识进行划分,比如将电商项目划分为订单、商品、促销、物流、售后等限界上下文。从技术实现角度,比如为了解决系统的高并发,决定引入缓存,那就可以考虑将缓存服务抽离为一个独立的限界上下文作为支撑。从团队合作的角度,即回到了以人为本的思想。比如根据领域业务划分的限界上下文组建领域特性团队进行职责划分以确定团队协作边界。明确的团队边界有利于团队的沟通和协作。
领域
领域反应的是我们业务上需要解决的问题,模型是我们针对该问题提出的解决方案。综合来说,领域模型就是用来描述我们正在解决的问题和提出的解决方案。领域模型按照我个人的理解,就是将业务中涉及到的概念以面向对象的思想进行抽象,抽象出实体对象,确定实体所对应的方法和属性,以及实体之间的关系。然后将这些实体和实体之间的关系以某种形式(比如UML、图形、代码、文字描述等)展现出来。
-
值对象
1.主从:某一概念是主动还是从属性的,如果是从属性的,且这种 从属性的生命周期严格依赖于某实体,如可以考虑成为值对象的候 选。 2. 复用:某一概念是否可以被复用,共享,复制。象对应领域属性, 规格,策略,规则的类,虽然对其他实体类的依赖性不是很强,可以 独立存在。可以被不同的实体对象(不是指类)共享,复制,复用。 如人的地址属性,画笔的颜色字体属性,语言级别如 string字符串。 3. 作用: 3.1 往往是做为临时对象来进行计算,得出同类型的新值对象。来给 实体对象业务使用。如创建查询标准这一临时对象,将此查询标准与 其他查询标准组合,生成新查询标准,给业务应用来进行过滤或查 询。 3.2 创建后做为临时对象来作为实体的业务行为的一个参数,以给业 务行为提供验证检验审核某一规则或是特征之用 3.3 值对象提供的一些组合方法一般满足闭包特征:即 vo.add(VO anotherVO),vo.minus(VO anotherVO)都反回另一值对象。 4.值对象的存储和与其相关联的实体类存储,由实体类来负责实体 类的存储。通过设置实体对类与值类的级联关系。来达到实体类负责 值对象的存储管理。 在我们的项目实际分析设计中,其实不用严格区分实体对象和值对 象,用四色图来分析和理解更易接受。
:表示一个具体的概念我们上面设计的Address类,也能表示出地址这个概念。通过值的属性对其识别也就是不需要唯一标识,删去我们设计的AddressId即可。属性判等重写Equals方法,比较属性判断。固定不变就是通过构造函数来初始化,所有属性均不提供修改入口。
服务
服务是行为的抽象。应用服务通过委托领域对象和领域服务来表达用例和用户故事。领域对象(实体和值对象)负责单一操作。领域服务用于协调多个领域对象共同完成某个业务操作。应用服务不处理业务逻辑,领域服务处理业务逻辑。
-
特别
领域不变性
领域不变性指的是必须遵守的陈述或规则。换句话说,就是领域内我们关注的业务规则。比如,订单必须具有唯一订单编号、订单日期;订单必须冗余商品的基本信息(名称、价格、折扣);订单至少有一个商品,删除商品时,订单项需要一并删除;等等。
-
统一语言 建模 分层架构 界限上下文 聚合
-