10个通用软件架构模式

  在本文中,我将简要介绍以下10种常见的架构模式及其用法,优缺点。

  1. 分层模式
  2. 客户端 - 服务器模式
  3. 主从模式
  4. 管道过滤器模式
  5. 经纪人模式
  6. 点对点模式
  7. 事件总线模式
  8. 模型 - 视图 - 控制器模式
  9. 黑板模式
  10. 解释器模式

 

1.分层图案

该模式可用于建立可以分解为子任务组的软件系统,每个子任务都处于特定的抽象级别。每个层为下一个更高层提供服务。可见马丁鲍勃大叔的干净架构

最常见的4层通用信息系统如下。

  • 表示层(也称为UI层
  • 应用层(也称为服务层
  • 业务逻辑层(也称为域层
  • 数据访问层(也称为持久层

用法

  • 一般桌面应用程序
  • 电子商务Web应用程序。

分层模式

 

2.客户端 - 服务器模式

这种模式由两方组成; 一个服务器和多个客户端。服务器组件将为多个客户端组件提供服务。客户端从服务器请求服务,服务器向这些客户端提供相关服务。此外,服务器继续监听客户端请求。

用法

  • 在线应用程序,如电子邮件,文档共享和银行。

客户端 - 服务器模式

 

3.主从模式

这种模式由两方组成; 主节点从节点。主组件在相同的从组件之间分配工作,并根据从组返回的结果计算最终结果。

用法

  • 在数据库复制中,主数据库被视为权威源,从属数据库与其同步。
  • 外围设备连接到计算机系统中的总线(主驱动器和从驱动器)。

主从模式

 

4.管道过滤器模式

该模式可用于构建生成和处理数据流的系统。每个处理步骤都包含在过滤器组件中。要处理的数据通过管道传递。这些管道可用于缓冲或用于同步目的。

用法

  • 编译器。连续过滤器执行词法分析,解析,语义分析和代码生成。
  • 生物信息学的工作流程。

管道过滤器模式

 

5.经纪人模式

此模式用于构建具有分离组件的分布式系统。这些组件可以通过远程服务调用相互交互。一个经纪人组件负责通信之间的协调组件

服务器将其功能(服务和特征)发布到代理。客户端从代理请求服务,然后代理将客户端从其注册表重定向到合适的服务。

用法

经纪人模式

 

6.点对点模式

在这种模式中,各个组件称为对等组件。对等体既可以作为客户端,从其他对等体请求服务,也可以作为服务器,为其他对等体提供服务。对等体可以充当客户端或服务器,也可以充当两者,并且可以随时间动态地改变其角色。

用法

点对点模式

 

7.事件总线模式

这种模式主要涉及事件,有4个主要组成部分; 事件源事件监听器通道事件总线。源将事件发布到事件总线上的特定通道。听众订阅特定频道。监听者会收到发布到他们之前订阅的频道的消息的通知。

用法

  • Android开发
  • 通知服务

事件总线模式

 

8.模型 - 视图 - 控制器模式

这种模式,也称为MVC模式,将交互式应用程序划分为3个部分,

  1. model  - 包含核心功能和数据
  2. view  - 向用户显示信息(可以定义多个视图)
  3. controller  - 处理来自用户的输入

这样做是为了将信息的内部表示与向用户呈现和接受信息的方式分开。它解耦组件并允许有效的代码重用。

用法

  • 主要编程语言中的万维网应用程序架构。
  • Web框架,如DjangoRails

模型 - 视图 - 控制器模式

 

9.黑板模式

这种模式对于没有确定性解决方案策略的问题很有用。黑板模式由3个主要部分组成。

  • 黑板blackboard  - 包含解决方案空间中对象的结构化全局内存
  • 知识来源  - 具有自己代表性的专业模块
  • 控制组件  - 选择,配置和执行模块。

所有组件都可以访问黑板。组件可能会生成添加到黑板的新数据对象。组件在黑板上查找特定类型的数据,并且可以通过与现有知识源的模式匹配来找到它们。

用法

  • 语音识别
  • 车辆识别和跟踪
  • 蛋白质结构鉴定
  • 声纳信号解释。

黑板模式

 

10.解释器模式

此模式用于设计解释用专用语言编写的程序的组件。它主要指定如何评估程序行,称为用特定语言编写的句子或表达式。基本思想是为语言的每个符号设置一个类。

用法

  • 数据库查询语言,如SQL。
  • 用于描述通信协议的语言。
解释器模式

 

业务分析设计

架构设计