一、DDD分层架构
DDD分层架构中有很重要的依赖原则:每层只能与位于下方的层发生耦合,类似于网络的7层或TCP/IP的4层模型架构,每一层各司其职,并且只关心向下一层的实现,而不会出现各层耦合。
DDD分层架构中包含四层:从上到下分别是用户接口层,应用层,领域层和基础层。

二、洋葱架构
2008年Jeffrey Palermo已经提出了具有分层思想的洋葱架构,如下图,同心圆代表软件的不同部分,从里向外依次是领域模型,领域服务,应用服务和外层的基础设施和用户终端。
洋葱架构根据依赖原则,定义了各层的依赖关系,越往里依赖程度越低,代码级别越高,越是核心能力。外圆代码依赖只能指向内圆,内圆不需要知道外圆的情况,这种架构也是典型的分层架构,和DDD分层架构一样,都体现了高内聚,低耦合的设计特性。洋葱架构也常作为指导微服务设计的重要架构之一。

三、六边形架构
2005年Alistair Cockburn提出了六边形架构,在这个架构中,将应用分为内六边形和外六边形两层,内六边形实现应用的核心业务逻辑。外六边形完成外部应用,基础资源等的交互和访问,对于与不同的外部系统交互,由外六边形的适配器负责协议转换,保证内六边形业务逻辑的干净。
这种架构也是典型的分层架构,和DDD分层架构一样,都体现了高内聚,低耦合的设计特性。六边形也常作为指导微服务设计的重要架构之一。

四、DDD分层协作
DDD各层的主要职责和怎么分工协作如下图:

PO(数据持久化对象):与数据库字段映射的数据载体
DO(领域对象):领域模型核心业务对象的载体,包括实体和值对象
DTO(数据传输对象):用于前端和微服务交互的数据传输载体
用户接口层:主要有facade接口,Assembler转换器
应用层:
很简单,只需设想你和产品聊这个事情时,需不需要把这部分信息输入给它?比如接口调用的处理,数据的转换,是否加了缓存等等都不属于产品关心的东西,所以不算是业务逻辑
领域层:
基础层: