uncle-bob-craft - clean-architecture

发布时间:2026/9/29 3:28:45
uncle-bob-craft - clean-architecture 整洁架构 —— 深度参考基于 Robert C. Martin 的《整洁架构》2017。当需要依赖方向、层次和边界的详细标准时使用。依赖规则依赖只向内指向。中心的代码实体、用例不得依赖外层圆圈中的代码UI、DB、框架。外层圆圈依赖内层圆圈内层圆圈定义接口外层圆圈实现它们。违规用例从 Express、Django 或具体仓库实现导入。正确用例依赖接口如OrderRepository外层的适配器实现它并使用 Express/DB。层次由内向外实体—— 企业业务规则。跨应用适用的普通结构和规则。不依赖框架或 UI。用例—— 应用业务规则。编排实体并定义应用特定工作流。只依赖实体以及用于 I/O 的接口仓库、展示器。接口适配器—— 在用例与外部世界之间转换数据。展示器、网关、控制器将外部格式与用例格式互相转换。依赖用例并且只能通过用例依赖实体。框架与驱动—— Web 框架、DB 驱动、消息、文件 I/O。实现用例或接口适配器定义的接口。向内依赖。边界边界 内层代码依赖、外层代码实现的接口或抽象类型。好的边界使切换实现变得容易例如测试用内存仓库生产用 SQL 仓库。在有理由变化或替换的地方划定边界不同的持久化、不同的 UI、不同的传输。此语境中的 SOLIDSRP—— 每个模块类/包只有一个变更理由一个参与者。例如如果报告格式化和报告计算因不同原因变化就将它们分开。OCP—— 通过接口的新实现新适配器扩展行为而非编辑现有用例或实体代码。LSP—— 仓库或网关接口的任何实现都必须可替换而不破坏用例。ISP—— 小而聚焦的接口例如如果读和写演进方式不同用ReadOrderRepository和WriteOrderRepository而非一个臃肿的OrderRepository。DIP—— 用例依赖OrderRepository接口组合根注入SqlOrderRepository。高层策略不依赖低层细节。依赖反转无反转用例直接导入并调用SqlOrderRepository→ 用例依赖 DB。有反转用例依赖OrderRepository接口SqlOrderRepository实现它并在边缘注入。用例保持独立于 SQL。组件内聚与耦合用于较大系统将类分组为组件模块、包时Uncle Bob 定义内聚REP复用/发布等价—— 复用的单元即发布的单元将一起复用和发布的分组。CCP共同闭包—— 因相同原因变化的类属于同一组件减少变更影响。CRP共同复用—— 一起复用的类应打包在一起避免强制依赖者拉入超出所需的内容。耦合ADP无环依赖—— 组件依赖图必须无环。SDP稳定依赖—— 朝稳定方向依赖较不稳定的组件依赖较稳定的组件。SAP稳定抽象—— 稳定组件应该是抽象的不稳定组件可以是具体的。在讨论超越单层的模块/包边界时使用。完整论述见《整洁架构》Martin2017。在审查依赖方向、层次违规或缺失边界时使用此参考。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询