(转)4、架构风格 vs. 架构模式 vs. 设计模式

翻译转帖

原文链接 https://herbertograca.com/2017/07/28/architectural-styles-vs-architectural-patterns-vs-design-patterns/

这篇文章是软件架构编年史的一部分, 一系列关于软件架构的文章。在它们中,我写了我在软件架构方面学到的东西,我如何看待它,以及我如何使用这些知识。如果您阅读本系列之前的文章,这篇文章的内容可能会更有意义。

在上一篇文章中,我写了编程语言是如何演变的,以及它告诉我们什么:它们总是朝着提供更多模块化封装的方向发展。

在下面的帖子中,我将写关于架构风格和架构模式的演变,所以今天我将写什么是架构风格,什么是架构模式。

与软件开发中的许多术语一样,这些术语并不明确,不同的人赋予它不同的含义。MSDN 说架构风格和架构模式是相同的东西,但就我个人而言,我更喜欢按照George Fairbanks 和 Michael Keeling 的解释,this stack overflow answer中所说的内容以及维基百科如何  将两者分开来思考这些 : 主要区别在于范围

同样重要的是要强调架构风格、架构模式和设计模式不是相互排斥的,它们是互补的,它们都可以教给我们一些东西,尽管像往常一样,它们应该只在需要时使用。

架构风格

架构风格非常广泛地告诉我们如何组织我们的代码。它是最高级别的粒度,它指定应用程序的层、高级模块以及这些模块和层如何相互交互,它们之间的关系。架构风格的例子:

  • 基于组件
  • 单体应用
  • 分层架构
  • 管道和过滤器
  • 事件驱动
  • 发布订阅
  • 插件化
  • 客户端服务器
  • 面向服务

架构风格可以通过多种方式实现,具有特定的技术环境、特定的策略、框架或实践。

架构模式

模式是重复出现的问题的重复解决方案。在架构模式的情况下,他们解决与架构风格相关的问题。例如,“我们将拥有哪些类以及它们将如何交互,以实现具有一组特定层的系统” 或者“我们的面向服务的架构中将具有哪些高级模块以及它们将如何通信” ,或 我们的客户端-服务器架构将有多少层”。

架构模式对代码库有广泛的影响,最常影响整个应用程序的水平(即如何在层内构建代码)或垂直(即如何将请求从外层处理到内层和背部)。架构模式示例:

  • 三层
  • 微内核
  • 模型-视图-控制器(MVC)
  • 模型-视图-视图模型(MVVM)

设计模式

设计模式在其范围上不同于架构模式,它们更加本地化,​​它们对代码库的影响较小,它们影响代码库的特定部分,例如:

  • 当我们只知道在运行时需要实例化的类型(可能是工厂类?)时,如何实例化一个对象;
  • 如何使对象根据其状态(可能是状态机或策略模式?)表现出不同的行为。

结论

正如我在这篇文章的开头提到的,这都是关于范围的:

  • 架构风格是最高抽象级别的应用程序设计;
  • 架构模式是实现架构风格的一种方式;
  • 设计模式是一种解决局部问题的方法。

此外,模式可能既可以用作架构模式,也可以用作设计模式,这同样取决于我们在特定项目中使用它的范围。

来源

2004 年 - 微软 - 理解面向服务的架构

2009 年 – 微软 – 微软应用架构指南

2010 – Stack Overflow –  Arch 之间的区别是什么。图案和拱。风格?

2014 年 – George Fairbanks – 架构模式与架构风格

2017 – 维基百科 – 软件架构风格和模式列表

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值