五种常见软件架构风格

目录

数据流风格(批处理序列;管道/过滤器)

批处理

管道/过滤器

调用/返回风格(主程序/子程序;面向对象风格;层次结构)

主程序/子程序

面向对象风格(普遍使用)

层次结构

独立构件风格(进程通信;事件系统)

进程通信

事件系统

虚拟机风格(解释器;基于规则的系统)

解释器

基于规则的系统

仓库风格(数据库系统;超文本系统;黑板系统)

数据库系统

超文本系统

黑板系统


  • 数据流风格(批处理序列;管道/过滤器

  • 批处理

特点:每一步处理都是独立的,并且每一步都是顺序执行的,只有当前一步处理完,后一步处理才能开始。数据传送在步与步之间作为一个整体。

典型应用:经典数据处理;程序开发;window下的BAT程序。

  • 管道/过滤器

特点:面向数据流传输,每个构件都有一组输入和输出,构件读输入的数据,经过内部处理,产生输出数据流。

优点:a)使软件具有良好的隐蔽性和高内聚、低耦合的特点 b)支持软件重用 c)系统维护和增强系统性能简单 d)支持并发执行

缺点:a)通常导致进程成为批处理的结构 b)不适合处理交互的应用 c)由于每个过滤器都增加了解析和合成数据的工作,导致系统性能下降。

  • 调用/返回风格(主程序/子程序;面向对象风格;层次结构

  • 主程序/子程序

特点:采用单线程控制,把问题划分为若干处理步骤,构件即为主程序和子程序。

  • 面向对象风格(普遍使用)

特点:建立在数据抽象和面向对象的基础上,对象是通过函数和过程的调用来交互的。

优点:a)改变一个对象的表示,不影响其他的对象 b)设计者可以将一些数据存取操作的问题分解为一些交互的代理程序集合。

缺点:a)对象的标识改变,就必须修改所有其他明确调用它的对象 b)必须修改所有显示调用它的其他对象,例如A 使用了对象 B C 也使用了对象 B,那么, C B 的使用所造成的对 A 的影响可能

  • 层次结构

特点:每一层为上层服务,并作为下层客户,允许将一个复杂问题分解成一个增量步骤序列。

缺点:并不是每个系统都很容易划分为分层模式,很难找到一个合适的正确的抽象方法。

实例:

1. 二层及三层C/S架构风格

二层:S:服务器(后台)复制数据管理;C:客户机(前台)完成与用户的交互。

三层:表示层:应用的用户接口,担任用户与应用间的对话功能;功能层:应用实体,实现业务的处理逻辑;数据层:数据管理系统,负责对数据库数据的读写。

2. B/S架构风格

浏览器/服务器,是三层结构的一种实现方式。

缺点:缺乏对动态页面的支持能力,没有集成有效的数据库处理功能,数据查询响应速度差。

3. MVC架构风格

模型(model)-视图(view)-控制器(controller)

4. MVP架构风格

Model-View-PresenterModel提供数据,View 负责显示,Controller/Presenter 负责逻辑的处理

优点:避免了view与model之间的耦合,进一步降低了presenter对view的依赖。

  • 独立构件风格(进程通信;事件系统

  • 进程通信

特点:构件是独立的过程(命名过程),连接件是消息传递(可以点对点、异步和同步方式及远程过程调用等)

  • 事件系统

特点:构件不直接调用一个过程,而是触发或广播一个或多个事件。

  • 虚拟机风格(解释器;基于规则的系统

  • 解释器

特点:可以仿真硬件执行过程和一些关键应用。

包含完成解释工作的解释引擎,一个包含将被解释的代码的存储区,一
个记录解释引擎当前工作状态的数据结构,以及一个记录源代码被解释执行进度的数据结构。

缺点:执行效率低

典型应用:专家系统。

  • 基于规则的系统

特点包括规则集、规则解释器、规则/数据选择器及工作内存。

  • 仓库风格(数据库系统;超文本系统;黑板系统

  • 数据库系统

特点:构件包含两大类,一个是中央共享数据源,保存当前系统的数据状态;一个是多个独立处理元素,处理元素对数据元素进行操作。

  • 超文本系统

典型应用:早期静态网页

  • 黑板系统

特点:在求解过程中综合应用多种不同的知识源,使得问题的表达、组织和求解变得容易,适用于解决复杂的非机构化问题。

包含:a)知识源 b)黑板数据结构 c)控制

典型案例:语言识别系统、信号处理系统、松耦合代理数据共享存取

猜你喜欢

转载自blog.csdn.net/a15626250225/article/details/127517447