软件架构风格整理(2 调用/返回) .

1 调用/返回

1.1 主程序/子程序

单线程控制,把问题划分为若干处理步骤,构件即为主程序和子程序。子程序通常可合成为模块。过程调用作为交互机制,即充当连接件。调用关系具有层次性,其语义逻辑表现为子程序的正确性,取决于它调用的子程序的正确性。

这种程序风格也比较多,比如早期的结构化程序.

1.2 面向对象风格

数据抽象和面向对象架构风格。这种风格的构件是对象。对象是抽象数据类型的实例。在抽象数据类型中,数据的表示和它们的相应操作被封装起来。对象的行为体现在其接受和请求的动作。连接件即对象间交互的方式,对象是通过函数和过程的调用来交互的。对象具有封装性,一个对象的改变不会影响其他对象。对象拥有状态和操作,也有责任维护状态。这种结构风格中包含有封装、交互、多态、集成和重用等特征.

这种风格中,数据表示和与之相连的原语操作被封装在一个抽象数据类型或对象中。这种风格的部件是对象,也可称为抽象数据类型的实例。

这种风格的两个重要特征为:

1) 对象负责维护其表示的完整性;

2) 对象的表示对其它对象而言是隐蔽的。因为一个对象对它的客户隐藏了自己的表示,所以这些对象可以不影响它的客户就能改变其实现方法

l 优点:

1) 因为对象对其他对象隐藏它的表示.所以可以改变一个对象的表示.而不影响其他的对象。

2) 设计者可将一些数据存取操作的问题分解成一些交互的代理程序的集合;

l 缺点

1) 为了使一个对象和另一个对象通过过程调用等进行交互,必须知道对象的标识。

2) 只要一个对象的标识改变了.就必须修改所有其他明确调用它的对象,并消除由此带来的一些副作用

3) 不同对象的操作关联性弱

面向对象是现在编程最流行的方式,基本上是无所不对象.但这也不能说明其它风格就不好,因为现在很难找到一个程序只包含有一种架构风格.

1.3 层次结构

层次结构构架风格。层次系统组织成一个层次结构。构件在一些层实现了虚拟机。连接件通过决定层间如何交互的协议来定义,拓扑约束包括对相邻导间交互的约束。这个风格的特点是每层为上一层提供服务,使用下一层的服务,只能见到与自己邻接的层。大的问题分解为若干个渐进的小问题,逐步解决,隐藏了很多复杂度。修改一层,最多影响两层,而通常只能影响上层。上层必须知道下层的身份,不能调整层次之间的顺序。

优点:

1) 支持基于抽象程度递增的系统设计,使得设计者可以把一个复杂系统按递增的步骤分解开。

2) 支持功能扩展,每一层至多和相邻的层次交互。

3) 支持复用,只要服务接口定义不变,不同的实现可以交换使用。

缺点

1) 适应面不宽

2) 并不是每个系统都可以很容易地划分为分层的模式,甚至即使一个系统的逻辑结构是层次化的,出于对系统性能的考虑,系统设计师不得不把一些低级或高级的功能综合起来;

很难找到一个合适的、正确的层次抽象方法。

你可能感兴趣的:(软件架构)