原文链接:https://betterprogramming.pub/the-clean-architecture-beginners-guide-e4b7058c1165


作者&文章简介

  • 文章作者:Bharath
  • 此篇整洁架构新手指南写于 2022.1.4
  • 用来解读鲍勃大叔(Robert C. Martin)的这篇博客:《The Clean Architecture》
  • 而这篇文章写于2012.8.13,真的是看经典十年后也不晚啊

    来自鲍勃大叔的名言

    “The goal of software architecture is to minimize the human resources required to build and maintain the required system.” ― Robert C. Martin, Clean Architecture
    译文:软件架构的目标是最大限度地减少构建和维护所需系统所需的人力资源。

    整洁架构

    无论是看 Bharath 的新手指南,还是直接读鲍勃大叔的整洁架构原文,这张经典的原图得先贴出来:
    image.png
    如上图所示,整洁架构一共分为四层,依赖规则(图中左侧至中间的黑色箭头)是由外而内,最外层(蓝色的圈)通常是变化最多的一层,越往内层其稳定性越高(红色层+黄色层:除非业务逻辑发生了变化,否则不变)。

  • 整洁架构衍生于:六边形架构、洋葱架构等

    • 蓝色层(Frameworks & Drivers):基础设施层
    • 绿色层(Interface Adapters):接口层/适配层
    • 红色层(Application Business Rules):应用层
    • 黄色层(Enterprise Business Rules):领域层/核心层
  • 【重要】依赖规则:由外而内,也就是说内层应该不知道外层才对
    • 鲍勃大叔特意强调,依赖规则是整洁架构可以正常运作的前提
    • Bharath 还专门画了张图来解释此依赖关系的正确读法
  • 关注点分离:不同层的职责不同,分离关注点不仅更易于开发,也易于测试
  • 红色层:以不同的功能/用例来将核心业务能力串起来
  • 黄色层:最稳定的一层,将领域能力/核心能力构建在该层

    好的架构有如下特征/优势:

  • 可测试性(Testable)

  • 可维护性(Maintainable)
  • 可变化性(Changeable)
  • 易于开发(Easy to Develop)
  • 易于部署(Easy to Deploy)
  • 独立性(Independent)

    扩展阅读

    在微信读书平台上有中文版电子书《整洁架构之道》

    《架构整洁之道》是创造“Clean神话”的Bob大叔在架构领域的登峰之作,围绕“架构整洁”这一重要导向,系统地剖析其缘起、内涵及应用场景,涵盖软件研发完整过程及所有核心架构模式。 本书分为6部分,第1部分纲领性地提出软件架构设计的终极目标,描述软件架构设计的重点与模式;第2~4部分从软件开发中三个基础编程范式的定义和特征出发,进一步描述函数、组件、服务设计与实现的定律,以及它们是如何有效构建软件系统的整体架构的;第5部分从整洁架构的定义开始,详细阐述软件架构设计过程中涉及的方方面面,包括划分内部组件边界、应用常见设计模式、避开错误、减少成本、处理特殊情况等,并以实战案例将内容有机整合起来;第6部分讲述具体实现细节;附录则透过作者数十年的软件从业经历再次印证本书的观点。

image.png