在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

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:434321
用户头像

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

关注

评论

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

低代码平台对程序员友好吗?

互联网工科生

低代码 可视化 JNPF

华为云能力中心开业暨项目签约活动圆满举办!

新消费日报

如何加强数据资产管理?专家共话分级分类实战宝典

说山水

Redis跳跃表是如何添加元素的?

王磊

java面试

鲸鸿动能对话汽车之家,全链路营销助力新增长

最新动态

悟道·天鹰 Aquila + 天秤 FlagEval,打造大模型能力与评测标准双标杆

硬科技星球

「悟道·视界」视觉大模型系列,6项领先成果技术详解

硬科技星球

Python开发中自动化构建项目结构样式

华为云开发者联盟

Python 开发 华为云 华为云开发者联盟 企业号 6 月 PK 榜

路径万千,华为云数据库选择珠峰北坡登顶,给世界一个更优选择

YG科技

宝兰德应用服务器软件与华为云GaussDB完成兼容互认证

YG科技

赋能政企深度用云,华为云数据库大咖有话说

YG科技

从新手游上线看游戏数据库选型

YG科技

即时通讯系统为什么选择GaussDB(for Redis)?

YG科技

苏光牛:坚持产品能力的升级,做金融数字化的坚实数据底座

YG科技

中国高校最大云上科研智算平台上线!

新云力量

智能 计算 复旦大学

详解数据库中的索引和视图

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 6 月 PK 榜

全量通过!华为云GaussDB首批完成信通院全密态数据库评测

YG科技

挑选最佳美国主机,让你的网站飞跃

一只扑棱蛾子

美国主机

华为云低代码来啦,好奇心满满的开发者们快来体验!

低代码 华为云 华为开发者大会2023

inBuilder今日分享丨RPM包制作入门

inBuilder低代码平台

数智底座必备能力之轻松驾驭新技术

用友BIP

数智底座 Pass平台

共筑数字化未来 金山办公携手华为云完成文档中心和GaussDB适配

YG科技

“息壤”引领首个算力互联互通验证平台建设,天翼云开启算力互联网新纪元!

天翼云开发者社区

人工智能 云计算

海量数据运维要给力,华为云GaussDB(for Cassandra)来助力

YG科技

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