Skip to content

Instantly share code, notes, and snippets.

@RitterHou
Last active March 8, 2017 12:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save RitterHou/4f0cfdffd891c6de4b382bf89171e24e to your computer and use it in GitHub Desktop.
Save RitterHou/4f0cfdffd891c6de4b382bf89171e24e to your computer and use it in GitHub Desktop.
DDD 的一些概念

什么时候应该考虑使用使用DDD:

  1. 如果你的项目中业务操作超过25个;
  2. 又或者你们的技术人员并不是很了解该领域的相关内容;
  3. 也许你的软件在接下来的几年里会不断地变化迭代;

DDD 分层:

层级 功能
展现层 即消费者,也就是使用我们服务的人
应用层 将我们的服务进行最终封装并暴露给外部
领域层 核心业务相关
基础设施层 一些基础功能,例如基础组件,ActiveMQ 发送消息,数据持久化,等等

与领域层相关的一些属性:

  1. 实体对象(Entity):用来保存一些数据,并且每个用户所拥有的数据(很有可能)是不一样的;
  2. 值对象(ValueObject):所有用户都会拥有统一的值对象,换句话说,值对象是不变的,它提供给所有的用户使用,它拥有共享属性;
  3. 服务(Service): 服务应该是无状态的,即服务在执行的时候不应该改变服务中的相关属性。领域中的服务和基础设施中的服务不应混淆,只有在有必要的时候才应该创建领域服务;
  4. 聚合:聚合将内部和外部的对象划分开来,每个聚合都有一个根,这个根是一个实体,是外部可以访问的唯一对象;
  5. 有的时候,使用工厂模式来创建对象是合理且方便的。

一个限界上下文应该对应一个子域

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment