|
软件架构的模式是经过实践证明的、可重复使用的软件架构设计策略,为粗粒度的软件重用提供了可能。它描述了某一特定应用领域中系统的组织方式,反映了领域中众多系统所共有的结构和语义特性,描述了将各个模块和子系统有效地组织成一个完整系统的解决方案。常见的软件架构模式如下。
|
|
|
|
每个组件都有一组输入/输出,组件读取输入的数据流,经过内部处理后,产生输出的数据流,该过程主要完成输入流的变换及增量计算。组件称为过滤器,连接器称为数据流传输的管道。管道/过滤器输出的正确性并不依赖于过滤器进行增量计算过程的顺序。典型应用包括批处理系统。管道/过滤器模式如下图所示。
|
|
|
|
|
|
.体现了各功能模块的“黑盒”特性及高内聚、低耦合的特点。
|
|
|
|
.便于系统维护。新的过滤器可以加到现有系统中,旧的可以由改进的过滤器替换。
|
|
|
|
.支持并行操作,每个过滤器可以作为一个单独的任务完成。
|
|
|
|
|
.需要设计者协调两个相对独立但又存在关系的数据流。
|
|
|
.可能需要每个过滤器自己完成数据解析和合成工作(如加密和解密),从而导致系统性能下降,并增加了过滤器具体实现的复杂性。
|
|
|
|
面向对象模式建立在数据抽象和面向对象的基础上,将数据的表示方法及其相应操作封装在更高抽象层次的数据类型或对象中。
|
|
|
面向对象模式的典型应用是基于组件的软件开发(CBD)。面向对象模式如下图所示。
|
|
|
|
|
|
|
|
|
|
|
.对象之间的调用需要知道所调用对象的标识。如果对象的标识发生改变,就必须通知所有调用该对象的对象,否则系统可能无法正常运行。
|
|
|
|
事件驱动模式的基本原理是组件并不直接调用过程,而是触发一个或多个事件。系统中的其他组件可以注册相关的事件,在触发一个事件时,系统会自动调用注册了该事件的组件过程,即触发事件会导致另一组件中过程的调用。
|
|
|
|
|
|
.具有良好的可扩展性,通过注册可引入新的组件,而不影响现有组件。
|
|
|
|
|
.组件削弱了自身对系统的控制能力。一个组件触发事件时,并不能确定响应该事件的其他组件及各组件的执行顺序。
|
|
|
|
|
|
分层模式采用层次化的组织方式,每一层都为上一层提供服务,并使用下一层提供的功能。这种模式允许将一个复杂问题逐步分层实现。层次模式中每一层最多只影响两层,只要给相邻层提供相同的接口,就允许每层用不同的方法实现,以充分支持软件复用。
|
|
|
分层模式的典型应用是分层通信协议,如ISO/OSI的七层网络模型。此模式也是通用应用架构的基础模式。
|
|
|
|
|
|
|
客户/服务器(C/S)模式是基于资源不对等,为实现共享而提出的。C/S模式将应用一分为二,服务器端(后台)负责数据管理和事务处理,客户端(前台)完成与用户的交互任务。
|
|
|
|
|
|
C/S模式中客户端和服务器端分离,允许网络分步操作,适用于分布式系统。为了解决客户端的访问问题,发展形成了浏览器/服务器(B/S)模式;为了解决服务器端的问题,发展形成了三层(多层)C/S模式,即多层应用架构。
|
|
|