什么时候应该考虑使用使用DDD:
- 如果你的项目中业务操作超过25个;
- 又或者你们的技术人员并不是很了解该领域的相关内容;
- 也许你的软件在接下来的几年里会不断地变化迭代;
层级 | 功能 |
---|---|
展现层 | 即消费者,也就是使用我们服务的人 |
应用层 | 将我们的服务进行最终封装并暴露给外部 |
领域层 | 核心业务相关 |
基础设施层 | 一些基础功能,例如基础组件,ActiveMQ 发送消息,数据持久化,等等 |
- 实体对象(Entity):用来保存一些数据,并且每个用户所拥有的数据(很有可能)是不一样的;
- 值对象(ValueObject):所有用户都会拥有统一的值对象,换句话说,值对象是不变的,它提供给所有的用户使用,它拥有共享属性;
- 服务(Service): 服务应该是无状态的,即服务在执行的时候不应该改变服务中的相关属性。领域中的服务和基础设施中的服务不应混淆,只有在有必要的时候才应该创建领域服务;
- 聚合:聚合将内部和外部的对象划分开来,每个聚合都有一个根,这个根是一个实体,是外部可以访问的唯一对象;
- 有的时候,使用工厂模式来创建对象是合理且方便的。
一个限界上下文应该对应一个子域。