专栏首页智能计算时代「软件架构」架构风格vs.架构模式vs.设计模式

「软件架构」架构风格vs.架构模式vs.设计模式

编程语言是如何发展的,以及它告诉我们的:它们总是朝着提供更多模块化和封装的方向发展。

在下面的文章中,我将介绍架构风格和架构模式的演变,所以今天我将介绍什么是架构风格,什么是架构模式。

与软件开发中的许多术语一样,这些术语并不清楚,不同的人赋予它不同的含义。MSDN说,架构风格和架构模式是一样的,但就我个人而言,我更喜欢用George Fairbanks和Michael Keeling解释的方式来思考这些问题,在这个堆栈中所说的溢出答案以及Wikipedia是如何将两者分开的:关键区别在于范围。

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

架构风格

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

  • 基于组件
  • 整体应用
  • 分层的
  • 管道和过滤器
  • 事件驱动
  • 发布订阅
  • 插件
  • 客户端服务器
  • 服务导向

体系结构样式可以通过各种方式实现,包括特定的技术环境、特定的策略、框架或实践。

架构模式

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

体系结构模式对代码库有着广泛的影响,最常见的影响是水平地(即如何在层内构造代码)或垂直地(即如何将请求从外层处理到内层和内层)。架构模式示例:

  • 三层
  • 微内核
  • 模型视图控制器
  • 模型视图视图模型

设计模式

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

当我们只知道在运行时需要实例化什么类型(可能是工厂类)时,如何实例化对象;

如何使对象根据其状态(可能是状态机或策略模式)有不同的行为。

结论

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

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

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

来源

  • 2004 – Microsoft – Understanding Service-Oriented Architecture
  • 2009 – Microsoft – Microsoft Application Architecture Guide
  • 2010 – Stack Overflow – What’s the difference between Arch. Patterns and Arch. Styles?
  • 2014 – George Fairbanks – Architecture Patterns vs. Architectural Styles
  • 2017 – Wikipedia – List of software architecture styles and patterns

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

本文:http://jiagoushi.pro/architectural-styles-vs-architectural-patterns-vs-design-patterns

本文分享自微信公众号 - 首席架构师智库(jiagoushipro),作者:南极真君

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 「演进架构」架构在实施之前是抽象的

    这是一个思想实验。拿一台计算机,在其上安装主流操作系统,以及各种软件(数据库,应用程序服务器,Web服务器等)。一切正常后,拔下电脑并将其放入壁橱中一年。在这一...

    首席架构师智库
  • 「企业架构」企业架构框架图

    企业架构框架图是架构的分类方案(治理架构,业务架构,信息架构,技术架构,人力资本架构,安全架构,系统架构,软件架构,基础架构架构等)及其重要工件。企业架构框架可...

    首席架构师智库
  • 「企业架构」什么是TOGAF?

    TOGAF®由开放集团推出,是一种经验证的企业架构方法和框架,被世界领先的组织用于提高业务效率。它是一个企业架构标准,确保企业架构专业人员之间的标准、方法和通信...

    首席架构师智库
  • 对软件架构的一些思维脑图整理

    Java高级架构
  • 「演进架构」架构在实施之前是抽象的

    这是一个思想实验。拿一台计算机,在其上安装主流操作系统,以及各种软件(数据库,应用程序服务器,Web服务器等)。一切正常后,拔下电脑并将其放入壁橱中一年。在这一...

    首席架构师智库
  • 什么才是真正的架构设计?

    在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解。此君说的架构和彼君理解的架构未必是一回事。因此我们在讨论架构之前,我们先讨论架构的概念定义,概...

    xcbeyond
  • 跳出“误区”,学着如何打造“最好的架构”。

    “架构”是我们这行业种一个很常见的词,表明其必然也是经历了很长的岁月打磨所形成的一个词。架构的这个词出现的意义是什么?为了解决什么问题?只有把这2个问题想明白了...

    Java架构技术
  • 架构如何为业务和技术“服务”(1)

    前言 为提升架构对于项目,产品的贡献度,更好的服务于业务和技术,本文将探讨架构的现状和规划未来架构的目标。 在讨论架构、业务、技术的问题前,请耐心的阅读完本文有...

    用户1177503
  • 美丽的架构

    美丽的架构究竟是怎样的?架构师们上下求索,孜孜以求,始终不得其解。归根结底,美丽这个词语总还是偏于感性认识,就仿佛音乐之美,绘画之美,不能以尺度来衡量,追求的其...

    张逸
  • 工作多年,我对架构的一些理解

    每一个程序员都听过架构这个词,每一个程序员都有自己对此的理解和看法,本文分享我对架构的理解。

    Frank909

扫码关注云+社区

领取腾讯云代金券