建筑模式和建筑风格之间有什么区别?

dev*_*ium 39 architecture architectural-patterns

软件架构 - 基础,理论和实践中,我可以找到两者的定义.问题是,我不能用简单的英语得到每个人的意思:

建筑模式

体系结构模式是体系结构设计决策的命名集合,适用于参数化的重复设计问题,以解决出现该问题的不同软件开发环境.

建筑风格

建筑风格是建筑设计决策的命名集合,(1)适用于给定的开发环境,(2)约束特定于该环境中特定系统的建筑设计决策,以及(3)在每个环境中引出有益的品质结果系统.

每个人的意思是什么,他们之间有什么区别?

dev*_*ium 49

建筑模式是解决重复出现的建筑问题的一种方式.例如,MVC解决了将UI与模型分离的问题.传感器 - 控制器 - 执行器,是一种模式,可以帮助您解决面对多种输入感觉的问题.

另一方面,建筑风格只是经常性建筑设计的名称.与模式相反,它不存在"解决"问题.

管道和过滤器不能解决任何特定问题,它只是组织代码的一种方式.客户/服务器,主程序和子程序以及抽象数据类型/ OO,相同.

此外,单个体系结构可以包含多种体系结构样式,每种体系结构样式都可以使用多种体系结构模式.


Jag*_*mag 10

坦率地说,我一直认为这两个术语都是同义词!外行(相对而言)文学肯定会将它们视为这样.请参阅MSDN维基百科

然而,你的问题引起了我的兴趣,所以我做了更多的挖掘和坦率地说...除了参考企业架构实用指南(The Coad Series)之外我找不到多少,我从中引用: -

An architectural style (Base et al. 1997) and an architectural pattern 
(Buschmann et al. 1996) are essentially synonymous. 
Run Code Online (Sandbox Code Playgroud)

基于一些更多的谷歌搜索,这是我认为可能是区分这两者的一种可能方式

  • 架构风格是系统如何创建/将起作用的概念性方式
  • 架构模式描述了在子系统或模块级别及其关系中实现样式的解决方案.

架构模式如何与设计模式不同,即适配器,观察者基本上是应用它们的粒度级别(我知道这不是问题的一部分,但我认为它是相关的)


Pre*_*raj 9

建筑风格是抽象的即概念性的.

+---------------+--------------------------------------------------------+
|   Category    |                  Architecture styles                   |
+---------------+--------------------------------------------------------+
| Communication | SOA, ROA, Message Bus                                  |
| Deployment    | Client/Server                                          |
| Domain        | Domain Driven Design,Monolithic application            |
| Structure     | Component-Based, Object-Oriented, Layered, Plug-ins    |
+---------------+--------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

建筑模式具体即建筑风格的实施.

  • 例如:3层,N层,MVC,REST

设计模式是建筑级软件设计中常见问题的通用可重用解决方案.

  • 例如:Factory,Singleton,Prototype.

比喻:不同宗教的寺庙建筑风格:

在此输入图像描述


ken*_*orb 7

用非常简单的话说:

  • 建筑风格

    是一个概念,理论(以及它如何实现它取决于你).它也适用于软件世界之外.

    例如:REST(Representational State Transfer)是一种使用当前"Web"基础构建在某些原则上的架构风格.

  • 建筑模式

    描述软件系统(或模块)级别的解决方案.换句话说,它如何相互作用,例如视图与模型,模型与控制器.

  • 一种设计模式

    它是核心级别的解决方案,它讨论了类,函数以及逻辑流程的实际情况.