一、传统分层架构
分层架构的一个重要原则是:每层只能与位于其下方的层发生耦合。
分层架构分两种:一种是严格分层架构,规定某层只能与直接位于其下方的层发生耦合;另一种是松散分层架构,允许任意上方层与任意下方层发生耦合。
下图是一个典型的DDD传统分层架构。

以上分层架构中各层都有自己的职责:
用户接口层负责处理用户请求和用户显示;
应用层实现不同业务场景下的用例或业务流程。其中应用服务通常接收来自用户接口层的请求,然后通过资源库获取聚合实例,最后执行相应的命令操作,如下示例:
// 应用层的用例
public void cancelOrder(Long orderId) {
Order order = orderRepository.findById(orderId);
// 领域层的业务逻辑
order.cancel()
orderRepository.save(order);
}
领域层实现系统的核心业务逻辑,主要包含基于DDD业务建模产生的领域模型,这里的业务逻辑不同于应用层中的业务流程,如上代码示例;
基础设施层为其它各层提供通用的技术和基础服务,比如数据持久化功能。
二、传统分层架构的问题
DDD中资源库(Repository)用来获取或持久化聚合,每个聚合都拥有一个对应的资源库。由此可见资源库应该和聚合位于同一
DDD架构:为何选择六边形架构而非传统分层架构?

本文探讨了传统分层架构在DDD中的问题,特别是资源库接口实现的位置导致的耦合。通过依赖倒置原则,文章引入六边形架构,解释了它如何解决这些问题并提供更清晰的边界和可测试性。六边形架构强调端口和适配器,使应用程序独立于UI、数据库和外部接口,更符合整洁架构的理念。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



