第3章 软件体系结构风格 3.2 经典软件体系结构风格 ◇ 面向对象系统的缺点 ◎为了使一个对象和另一个对象通过过程调用等进 行交互,必须知道对象的标识。只要一个对象的标识 改变了,就必须修改所有其他明确调用它的对象; ◎ 必须修改所有显式调用它的其它对象,并消除由 此带来的一些副作用。例如,如果A使用了对象B,C 也使用了对象B,那么,C对B的使用所造成的对A的影 响可能是料想不到的。 希赛⑧
◇ 面向对象系统的缺点 第3章 软件体系结构风格 3.2 经典软件体系结构风格 ◎ 为了使一个对象和另一个对象通过过程调用等进 行交互,必须知道对象的标识。只要一个对象的标识 改变了,就必须修改所有其他明确调用它的对象; ◎ 必须修改所有显式调用它的其它对象,并消除由 此带来的一些副作用。例如,如果A使用了对象B,C 也使用了对象B,那么,C对B的使用所造成的对A的影 响可能是料想不到的
第3章软件体系结构风格 3.2 经典软件体系结构风格 基于事件的隐式调用 构件不直接调用一个过程,而是触发或广播一个或多个事件。 系统中的其它构件中的过程在一个或多个事件中注册,当一个 事件被触发,系统自动调用在这个事件中注册的所有过程,这 样,一个事件的触发就导致了另一模块中的过程的调用。 这种风格的构件是一些模块,模块既可以是一些过程,又可 以是一些事件的集合。过程可以用通用的方式调用,也可以在 系统事件中注册一些过程,当发生这些事件时,过程被调用。 这种风格的主要特点是事件的触发者并不知道哪些构件会被 这些事件影响。这样不能假定构件的处理顺序,甚至不知道哪 些过程会被调用,因此,许多隐式调用的系统也包含显式调用 作为构件交互的补充形式。 希赛
◇ 基于事件的隐式调用 第3章 软件体系结构风格 3.2 经典软件体系结构风格 构件不直接调用一个过程,而是触发或广播一个或多个事件。 系统中的其它构件中的过程在一个或多个事件中注册,当一个 事件被触发,系统自动调用在这个事件中注册的所有过程,这 样,一个事件的触发就导致了另一模块中的过程的调用。 这种风格的构件是一些模块,模块既可以是一些过程,又可 以是一些事件的集合。过程可以用通用的方式调用,也可以在 系统事件中注册一些过程,当发生这些事件时,过程被调用。 这种风格的主要特点是事件的触发者并不知道哪些构件会被 这些事件影响。这样不能假定构件的处理顺序,甚至不知道哪 些过程会被调用,因此,许多隐式调用的系统也包含显式调用 作为构件交互的补充形式
第3章软件体系结构风格 3.2 经典软件体系结构风格 基于事件的隐式调用的优点 ◎ 为软件重用提供了强大的支持。当需要将一个构 件加入现存系统中时,只需将它注册到系统的事件中。 ◎为改进系统带来了方便。当用一个构件代替另一 个构件时,不会影响到其它构件的接口。 希赛
◇ 基于事件的隐式调用的优点 第3章 软件体系结构风格 3.2 经典软件体系结构风格 ◎ 为软件重用提供了强大的支持。当需要将一个构 件加入现存系统中时,只需将它注册到系统的事件中。 ◎ 为改进系统带来了方便。当用一个构件代替另一 个构件时,不会影响到其它构件的接口
第3章软件体系结构风格 3.2 经典软件体系结构风格 基于事件的隐式调用的缺点 ◎构件放弃了对系统计算的控制。一个构件触发一个事件时, 不能确定其它构件是否会响应它。而且即使它知道事件注册了 哪些构件的构成,它也不能保证这些过程被调用的顺序。 数据交换的问题。有时数据可被一个事件传递,但另一些情 况下,基于事件的系统必须依靠一个共享的仓库进行交互。在 这些情况下,全局性能和资源管理便成了问题。 既然过程的语义必须依赖于被触发事件的上下文约束,关于 正确性的推理存在问题。 希赛
◇ 基于事件的隐式调用的缺点 第3章 软件体系结构风格 3.2 经典软件体系结构风格 ◎ 构件放弃了对系统计算的控制。一个构件触发一个事件时, 不能确定其它构件是否会响应它。而且即使它知道事件注册了 哪些构件的构成,它也不能保证这些过程被 调用的顺序。 ◎ 数据交换的问题。有时数据可被一个事件传递,但另一些情 况下,基于事件的系统必须依靠一个共享的仓库进行交互。在 这些情况下,全局性能和资源管理便成了问题。 ◎ 既然过程的语义必须依赖于被触发事件的上下文约束,关于 正确性的推理存在问题
第3章 软件体系结构风格 3.2经典软件体系结构风格 ◇ 分层系统 层次系统组织成一个层次结构,每一层为上层服务,并作为下 层客户。在一些层次系统中,除了一些精心挑选的输出函数外, 内部的层只对相邻的层可见。这样的系统中构件在一些层实现了 虚拟机(在另一些层次系统中层是部分不透明的)。连接件通过 决定层间如何交互的协议来定义,拓扑约束包括对相邻层间交互 的约束。 这种风格支持基于可增加抽象层的设计。允许将一个复杂问题 分解成一个增量步骤序列的实现。由于每一层最多只影响两层, 同时只要给相邻层提供相同的接口,允许每层用不同的方法实现, 同样为软件重用提供了强大的支持。 希赛
◇ 分层系统 第3章 软件体系结构风格 3.2 经典软件体系结构风格 层次系统组织成一个层次结构,每一层为上层服务,并作为下 层客户。在一些层次系统中,除了一些精心挑选的输出函数外, 内部的层只对相邻的层可见。这样的系统中构件在一些层实现了 虚拟机(在另一些层次系统中层是部分不透明的)。连接件通过 决定层间如何交互的协议来定义,拓扑约束包括对相邻层间交互 的约束。 这种风格支持基于可增加抽象层的设计。允许将一个复杂问题 分解成一个增量步骤序列的实现。由于每一层最多只影响两层, 同时只要给相邻层提供相同的接口,允许每层用不同的方法实现, 同样为软件重用提供了强大的支持