整洁架构简介
- 每一个完整的应用都有自己的核心逻辑,也都需要依赖一系列组件,例如数据库,消息队列,也会与其他团队开发的组件进行交互,例如UI界面和其他组件。
- 为了让外部依赖尽可能的减少对核心业务逻辑代码的影响,可以采用整洁架构。整洁架构的核心思想是将系统分解为多个层次,每个层次都有明确的职责和依赖关系,从而实现高内聚、低耦合的设计。
整洁架构中,业务核心代码在中间的实体层和用例层,接口适配层负责将用例层和外部世界进行交互,框架和驱动层包含了应用程序的基础设施和外部环境。
- 整洁架构的精华在于其中间的适配器层,它通过适配器将核心的业务代码,与外围的技术框架进行解耦。
- 1.实体层(Entities):实体层包含了应用程序的核心业务逻辑和数据模型,它们是应用程序中最基本的构件。实体层定义了应用程序中的数据结构,以及业务逻辑的校验和处理规则。
- 2.用例层(Use Cases):用例层包含了应用程序的业务逻辑,它们定义了应用程序的行为和操作。用例层负责处理用户请求,并协调各个领域对象之间的交互,从而实现应用程序的业务逻辑。
- 3.接口适配层(Interface Adapters):接口适配层负责将用例层和外部世界进行交互。它们包含了视图层(View)、控制器(Controller)、适配器(Adapter)等组件,负责将外部请求转换为用例层能够处理的格式,同时将用例层的响应转换为外部世界能够理解的格式。
- 4.框架和驱动层(Frameworks and Drivers):框架和驱动层包含了应用程序的基础设施和外部环境。它们包含了数据库、Web服务器、消息队列等组件,负责将应用程序和外部环境进行交互。
整洁架构的核心原则
- 整洁架构是一种软件架构设计原则,旨在使软件系统具有高内聚、低耦合、可测试和可维护的特性。它的核心原则包括依赖反转原则、单一职责原则和分离关注点。
- 依赖反转原则(Dependency Inversion Principle,DIP):该原则指导我们将高层模块与低层模块的依赖关系反转,使得高层模块不依赖于具体的低层模块实现,而是依赖于抽象接口。这样做的好处是,当低层模块发生变化时,高层模块不需要进行修改,只需要修改抽象接口的实现即可。这种解耦的设计使得系统更加灵活、可扩展和可测试。
- 单一职责原则(Single Responsibility Principle,SRP):该原则要求一个类或模块应该只有一个职责。每个类或模块应该专注于完成一个特定的任务,而不是承担过多的职责。这样做的好处是,当需求变化时,只需要修改与该职责相关的类或模块,而不会影响到其他部分。这种高内聚的设计使得代码更加清晰、可读性更强,并且易于维护和重用。
- 分离关注点(Separation of Concerns):该原则要求将不同的关注点分离开来,使得每个部分只关注自己的职责。通过将系统分解为多个模块或组件,每个模块或组件专注于处理特定的关注点,可以提高代码的可读性、可维护性和可测试性。例如,将业务逻辑与数据访问逻辑分离开来,可以使得两者的变化相互独立,降低了耦合性。
整洁架构的适配器
- 主动适配器,又称为“北向适配器”,就是由前端用户以不同的形式发起业务请求,然后交由应用层去接收请求,交由领域层去处理业务。用户可以用浏览器、客户端、移动 App、微信端、物联网专用设备等各种不同形式发起请求。然而,通过北向适配器,最后以同样的形式调用应用层。
- 被动适配器,又称为“南向适配器”,就是在业务领域层完成各种业务处理以后,以某种形式持久化存储最终的结果数据。最终的数据可以存储到关系型数据库、NoSQL 数据库、NewSQL 数据库、Redis 缓存中,或者以消息队列的形式发送给其他应用系统。但不论采用什么形式,业务领域层只有一套,但持久化存储可以有各种不同形式。南向适配器将业务逻辑与存储技术解耦。
参考资料
https://juejin.cn/post/7246365103783641143
https://www.51cto.com/article/769039.html