整洁架构简介

整洁架构简介

  • 每一个完整的应用都有自己的核心逻辑,也都需要依赖一系列组件,例如数据库,消息队列,也会与其他团队开发的组件进行交互,例如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

### DDD与整洁架构的关系及其设计原则 DDD(领域驱动设计)和整洁架构(Clean Architecture)都是现代软件工程中用于构建高质量、可维护系统的框架。两者虽然出发点不同,但在实际应用中有一定的交集。 #### 1. **DDD 的核心概念** DDD 是一种专注于复杂业务领域的设计方法论,其目标是通过建模将复杂的业务需求转化为清晰的代码结构[^3]。以下是 DDD 中的关键要素: - **领域模型**:定义了业务的核心逻辑以及实体之间的关系。 - **分层架构**:通常分为基础设施层、应用层、领域层和用户界面层[^4]。 - **聚合根**:作为事务边界的一种机制,控制对象图的一致性和持久化。 - **仓储模式 (Repository)**:抽象数据访问的方式,使得领域层不依赖具体的数据库技术。 #### 2. **整洁架构的核心理念** 整洁架构由 Robert C. Martin 提出,强调关注点分离和独立于框架的原则。它的主要特点包括: - **环形层次结构**:从内到外分别是实体(Entities)、用例(Use Cases)、接口适配器(Interface Adapters)和框架/驱动程序(Frameworks & Drivers)。每一层只依赖于内部层,外部层不得影响内部层的功能实现[^5]。 - **依赖倒置原则**:高层模块不应该依赖低层模块;二者都应该依赖抽象。具体而言,在整洁架构下,控制器和服务不会直接操作数据库或其他外部系统,而是通过接口完成通信[^5]。 #### 3. **两者的联系与区别** 尽管它们各自有独特的视角来看待软件开发流程,但当结合起来时能够形成强大的组合拳。下面列举了一些比较显著的区别及共同之处: | 方面 | DDD | 整洁架构 | |--------------------|-------------------------------------|-----------------------------------| | 主要目的 | 处理复杂业务逻辑 | 构造松散耦合的应用程序 | | 关注重点 | 域的具体细节 | 层次间的相互作用 | | 技术无关性 | 较弱 | 强 | 然而值得注意的是,这两种哲学并不矛盾反而互补。例如,在采用整洁架构的同时运用 DDD 方法可以帮助开发者更好地理解并表达特定上下文中所涉及的概念[^6]。 #### 4. **在微服务环境下的应用实例** 对于基于微服务的企业级解决方案来说,结合使用 DDD 和整洁架构尤为有效。因为每个单独的服务都可以看作是一个小型的整体项目,因此非常适合按照上述两种策略来进行规划和发展。比如在一个电商平台上创建订单功能时: - 使用 Bounded Context 来界定该部分与其他组件之间界限; - 利用 Value Object 表达不可变属性如货币金额等信息; - 运用 Service Layer 或 Application Layer 接收来自客户端请求并将之转换成对应命令传递给 Domain Model 执行相应动作; - 最终借助 Repository Pattern 完成对存储介质的操作而不暴露任何关于后者的信息给外界知道[^7]。 ```python class OrderService: def __init__(self, repository: IOrderRepository): self._repository = repository def place_order(self, order_details: dict) -> None: new_order = Order(order_details["items"], order_details["customer"]) # Validate business rules before persisting the entity. if not new_order.is_valid(): raise InvalidOrderException() self._repository.save(new_order) ``` 以上展示了如何利用 Python 编程语言编写遵循这两项指导方针之一的小型片段。这里我们看到 `Order` 类代表了一个完整的商业事实单元,并且所有的验证都在这个类里面执行完毕之后才允许保存至永久记录之中去[^8]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值