DDD分层协同支付订单分层用户界面层:适配不同终端(网关api、dubboapi、kafka消费者)生成Command|-com.yit.orders.facade:|-com.yit.orders.facade.OrderPayService:创建OrderPayCommand,交给PayingOrderCommandHandler执行应用服务层:从用户界面层执行命令,不实现具体服务。大致流程是通过域仓库访问聚合,调度聚合的行为函数响应命令,管理聚合对应的事务并通过域仓库持久化聚合,发布和订阅聚合产生的域事件通过事件总线聚合;|-com.yit.orders.module.paying.application|-command|-com.yit.orders.module.paying.application.command.OrderPayCommand:支付命令|-com.yit.orders.module.paying.application。command.PayingOrderCommandHandler:支付指令的执行(应用服务,管理多个聚合的交易,支付订单示例中只操作一个聚合)|-domainEventHandler|-com.yit.orders.module.paying.application.domainEventHandler.pay.common.OrderPayEventHandler:订阅领域事件(通过订阅模型解耦)领域层:主要实现领域模型的核心业务逻辑,体现领域模型的业务能力。聚合保证了业务逻辑(聚合内实体的事务边界)的原子性和一致性,并产生领域事件。|-com.yit.orders.module.paying.domain|-aggregate|-com.yit.orders.module.paying.domain.aggregate.IPayingOrderRepository:定义聚合存储库接口(依赖倒置)|-com.yit.orders。module.paying.domain.aggregate.ReadWritePayingNormalOrder:聚合(写模型),内聚业务逻辑,所有的业务反转必须通过聚合实现|-event|-com.yit.orders.module.paying.domain.event.pay.common.OrderPayEvent:领域事件(值对象,由聚合或实体生成,发布在应用层,用于聚合边界外通信)|-readonly|-com.yit.orders.module.paying.domain.readonly。ReadonlyPayingOrder:读取模型域存储层:|-com.yit.orders.module.paying.infrastructure|-com.yit.orders.module.paying.infrastructure.PayingOrderRepository:实现域层定义域仓库接口(通过接口Reaching外层依赖内层)实现参考:推荐MS官方的这个微服务示例项目EShopOnContainers来设计面向DDD的微服务DDD分层
