一、干净架构

2024-03-01T02:50:17.png

整洁架构的同心圆结构中可以看见三条由外向内的黑色箭头,它表示依赖规则(The Dependency Rule)。
依赖规则规定外层的代码可以依赖内层,但内层代码不可以依赖外层。
也就是内层逻辑不可以依赖任何外层定义的变量,函数,结构体,类等代码实体。

越外层越具体,越往内层越抽象。这也意味着,越往外越有可能发生变化,包括但不限于框架升级,中间件变更等。

二、DDD分层架构最重要的原则是什么?

在《实现领域驱动设计》一书中,DDD分层架构有一个重要的原则:每层只能与位于其下方的层发生耦合。

而架构根据耦合的紧密程度又可以分为两种:严格分层架构和松散分层架构。
优化后的 DDD 分层架构模型就属于严格分层架构,任何层只能对位于其直接下方的层产生依赖。
而传统的DDD分层架构则属于松散分层架构,它允许某层与其任意下方的层发生依赖。

那我们怎么选呢?为了服务的可管理,建议采用严格分层架构。
在严格分层架构中,领域服务只能被应用服务调用,而应用服务只能被用户接口层调用,服务是逐层对外封装或组合的,依赖关系清晰。而在松散分层架构中,领域服务可以同时被应用层或用户接口层调用,服务的依赖关系比较复杂且难管理,甚至容易使核心业务逻辑外泄。
试想下,如果领域层中的某个服务发生了重大变更,那该如何通知所有调用方同步调整和升级呢?但在严格分层架构中,你只需要逐层通知上层服务就可以了。

三、分层设计的意义

架构设计中有一句话:“没有什么问题是加一层解决不了的。”
分层是软件架构设计的重要方法,将软件系统划分为不同层次,每一层都有其特定职责。

软件分层重要性,可用几个关键字:模块化、可维护、可重用性、灵活性、隔离性。
分层提高了系统结构清晰度,使开发、测试、维护和扩展工作更加高效和可控。

附录

https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html
https://blog.csdn.net/qq_35030548/article/details/130550599

文章目录