AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

Bob 大叔曰:架构在于目的而非框架

  • 2013-07-07
  • 本文字数:924 字

    阅读完需:约 3 分钟

“架构的核心是目的,而我们却把它变成了框架和细节”, Robert C. Martin(又名“Bob 大叔”)在今年伦敦举办的 DDD Exchange Day 大会

Robert 引用了 Growing Object-Oriented Software Guided by Tests 一书中描述的架构模型(类似于 Hexagonal 架构),该模型通过三大块描述架构,这三块之间形成单方向的依赖关系——更易变的部分依赖于更稳定的部分:

  • 域模型,其中包含业务规则,它是最稳定且最重要的业务部分,不依赖于任何其他部分。
  • 应用服务,它实现了系统的用例,它使用并依赖于域模型。
  • 外部细节、数据库、用户接口、网络等,它们与业务模型的关系更少,是最易变的部分,依赖于其他两块。

Robert 指出,这一模型无法描述他所谓的关键内容:架构在于目的,即应用程序到底做什么。他认为,我们太过关注细节和框架,以致于使它们变成了系统的中心。

为解决这一短板,Robert 带我们回顾了 Ivar Jacobson 于 1992 年编著的一本书,“ Object-Oriented Software Engineering, A Use Case Driven Approach ”。Ivar 在此书中定义了一个应用架构,它基于许多小型用例,而用例不含细节。 Ivar 引入了三类对象,它们能自然地适应架构模型。Rovert 对它们的描述如下:

  • 交互者(Interactor)理解用例并包含针对特定应用的业务规则。
  • 交互者使用带有业务规则的实体(Entity)。
  • 边界(Boundary)对象在外部世界与交互者之间转移数据。

Robert 认为该模型的一个重要的优势是,它是一个可测试的模型,无需依赖于任何基础设施就可以对它进行测试,只需通过边界对象发送和接收对应的数据结构即可。

接着,Robert 转而介绍他的 Clean 架构模型,它是前述架构的一个变体。以上三个模型有一个共同核心,即它们都遵循稳定依赖原则,不对变化或易于变化的事物形成依赖。为实现了这一原则,上述模型让外部易变的部分依赖于更加稳定的部分,如域模型,而非形成相反的依赖关系。这样还可使实现变得更易于变化;多变的部分依赖于稳定的部分,Robert 说:

好架构就要能轻松地改变那些易变的决定。

Robert 还引用了 Jim Coplien 及其 DCI 架构,他认为这也相似的架构。

针对 Robert 近些年提出的架构思想,人们提出了一些批评意见,Robert 也作出了回应


查看英文原文: Uncle Bob: Architecture is About Intent, not Frameworks

2013-07-07 10:433964
用户头像

发布了 184 篇内容, 共 83.0 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

跨境电商独立站太烧钱?中小企业老板快收藏华为云这份省钱秘笈

轶天下事

流量为王时代,华为云耀云服务器L实例让网站建设不焦虑

轶天下事

数字城市运行监测主题指标设计思路探讨

Geek_37rwst

Mac模拟飞行驾驶游戏:X-Plane 12 for Mac

彩云

X-Plane 12 飞行模拟游戏

FFA 2023 「流式湖仓」专场:从技术原理到应用实践打造流式湖仓新架构

Apache Flink

大数据 flink 实时计算

SourceTree for Mac 最新激活 支持M1

彩云

sourcetree SourceTree Mac

感恩有你|恭喜 OpenTiny Vue 开源组件库喜迎1000+star!!!

OpenTiny社区

开源 前端 UI组件库

Kubernetes 漫游:etcd

Phoenix

大量索引场景下 Easysearch 和 Elasticsearch 的吞吐量差异

极限实验室

数据库 搜索引擎 elasticsearch 吞吐量 easysearch

Rectangle Pro for Mac 窗口布局增强工具

繁星

Rectangle Pro for Mac

超强新品叠加价格特惠,华为云助力小程序开发红海“掘金”

轶天下事

遥遥领先!TinyEngine 低代码引擎更新升级!

OpenTiny社区

开源 前端 低代码

SQL 中的运算符与别名:使用示例和语法详解

小万哥

MySQL 数据库 程序员 sql 后端开发

LED面板显示屏驱动芯片

芯动大师

让小程序开发稳步快跑,这款轻量应用服务器凭实力说话

轶天下事

老板抱怨网站投入没效果?掌握这份运营秘诀效果直接起飞

轶天下事

Git客户端:SourceTree for Mac中文版

繁星

sourcetree Git客户端

2023-11-25:用go语言,给定一个数组arr,长度为n,表示n个格子的分数,并且这些格子首尾相连, 孩子不能选相邻的格子,不能回头选,不能选超过一圈, 但是孩子可以决定从任何位置开始选,也可以

福大大架构师每日一题

福大大架构师每日一题

FFA 2023 「行业实践」专场: 金融/电力/汽车/互联网等多行业最佳实践

Apache Flink

flink

服务器的操作系统有哪些?

Geek_f19a80

服务器

钱少事少效率高,华为云这款轻量应用服务器真乃职场神器

轶天下事

快速从入门到精通,华为云耀云服务器L实例让小程序开发更简单

平平无奇爱好科技

商场如战场!华为云助力企业打赢云服务器之战

平平无奇爱好科技

sublime text for Mac 注册激活版 附 激活码 支持M1

加油,小妞!

代码编辑器 sublime text

EndNote 21 文献管理工具 Mac激活版 支持m1

加油,小妞!

文献管理 EndNote 21

天翼云智算基础设施平台“云骁”,驱动智算产业创新发展

极客天地

拒绝成为“时代的眼泪”,华为云这款服务器赋能企业高效转型

轶天下事

Bob大叔曰:架构在于目的而非框架_架构_Jan Stenberg_InfoQ精选文章