灵活性。对象的功能执行是在消息传递时确定的,支 对象的主体特征,使得对象可以根据自身的特点进行功 实现 易维护性。对象实现了抽象和封装功能,使其中可i 出现的错误限制在自身,不会向外传播,易于检错和修改 可扩充性。面向对象系统可通过继承机制不断扩充功 能 不足: 如果一个对象需要调用另一个对象,它就必须知道 那个对象的标识(对象名或其他标识符),增强了对象 间的依赖关系。如果一个对象改变 己的标识,就必须 通知系统中所有和它有调用关系的对象 这种显式调用方式可能有副作用。例如,如果A使用 了对象B,C也使用了对象B,那么,C对B的使用(引起 状态改变)可能造成的对A的影响。 西安交通大学刘海岩
西安交通大学 刘海岩 16 • 灵活性。对象的功能执行是在消息传递时确定的,支 持对象的主体特征,使得对象可以根据自身的特点进行功 能实现。 • 易维护性。对象实现了抽象和封装功能,使其中可能 出现的错误限制在自身,不会向外传播,易于检错和修改。 • 可扩充性。面向对象系统可通过继承机制不断扩充功 能。 不足: • 如果一个对象需要调用另一个对象,它就必须知道 那个对象的标识(对象名或其他标识符),增强了对象之 间的依赖关系。如果一个对象改变了自己的标识,就必须 通知系统中所有和它有调用关系的对象。 • 这种显式调用方式可能有副作用。例如,如果A使用 了对象B,C也使用了对象B,那么,C对B的使用(引起 状态改变)可能造成的对A的影响
(5)层次式风格 系统采用层次化的组织方式构建,系统中的每 层都要承担两个角色: 为结构中的上层提供服务; 作为结构中下层的客户,调用下层提供的功能函 数 最内层完成最基本的公用操作,向外各层逐渐进 行功能扩展。在大多数分层系统中,各层仅和自己相 邻层次交互信息。在一些特定情况下,内部层次也可 能会开放一些服务供其他层次调用。这样,分层系统 中的各个组件在不同层次上形成了不同功能级别的虚 拟机( Virtual machine),各虚拟机之间通过系统设计 时约定的协议进行通讯 概念上的分层模型如下 图所示。 西安交通大学刘海岩
西安交通大学 刘海岩 17 (5)层次式风格 系统采用层次化的组织方式构建,系统中的每一 层都要承担两个角色: • 为结构中的上层提供服务; • 作为结构中下层的客户,调用下层提供的功能函 数。 最内层完成最基本的公用操作,向外各层逐渐进 行功能扩展。在大多数分层系统中,各层仅和自己相 邻层次交互信息。在一些特定情况下,内部层次也可 能会开放一些服务供其他层次调用。这样,分层系统 中的各个组件在不同层次上形成了不同功能级别的虚 拟机(Virtual Machine),各虚拟机之间通过系统设计 时约定的协议进行通讯。一个概念上的分层模型如下 图所示
构件 该模型最典型的应 应用层 用如网络通讯系统的设 计,在这一应用领域中 功能层 每一层提供一个抽象的 核心层 功能,作为上层通讯的 基础,较低的层次定义 低层的交互,最低层次 通常只定义硬件物理连 接。 层次式体系结构 西安交通大学刘海岩
西安交通大学 刘海岩 18 该模型最典型的应 用如网络通讯系统的设 计,在这一应用领域中, 每一层提供一个抽象的 功能,作为上层通讯的 基础,较低的层次定义 低层的交互,最低层次 通常只定义硬件物理连 接
优点: 支持基于抽象程度递增的系统设计,可将一个复杂 的系统按功能递增的步骤进行分解 具有较好的可扩展性。每一层功能的改变最多影响 相邻上下层 支持软件复用。只要提供的服务接口不变,同一层 的不同实现可以交换使用。因此可定义一组标准接口, 允许有多种不同的实现方法。 不足: 并不是所有系统都会适用分层模式来描述。即使可 从逻辑上对系统功能进行分层,出于性能考虑,设计者 不得不将逻辑上高层次的功能和低层次上的具体实现紧 密结合,加大了不同层次间的耦合度 西安交通大学刘海岩
西安交通大学 刘海岩 19 优点: • 支持基于抽象程度递增的系统设计,可将一个复杂 的系统按功能递增的步骤进行分解。 • 具有较好的可扩展性。每一层功能的改变最多影响 相邻上下层。 • 支持软件复用。只要提供的服务接口不变,同一层 的不同实现可以交换使用。因此可定义一组标准接口, 允许有多种不同的实现方法。 不足: 并不是所有系统都会适用分层模式来描述。即使可 从逻辑上对系统功能进行分层,出于性能考虑,设计者 不得不将逻辑上高层次的功能和低层次上的具体实现紧 密结合,加大了不同层次间的耦合度
(6)基于事件的隐式调用风格 基于事件的隐式调用风格的思想是构件不直接调用 个过程,而是触发或广播( broadcast)一个或多个事件 在“源对象”和“监听者对象”之间,某种状态发生 变化的传递机制)。其它构件中的过程在一个或多个 事件中注册,当一个事件被触发,系统自动调用在这 个事件中注册的所有过程,这样,一个事件的触发就 导致了另一模块中的过程的调用 从体系结构上说,这种风格的构件是一些模块 这些模块既可以是一些过程,又可以是一些事件的集 合。过程可以用通用的方式调用,也可以在系统事件 中注册一些过程,当发生这些事件时,过程被调用。 西安交通大学刘海岩 20
西安交通大学 刘海岩 20 (6)基于事件的隐式调用风格 基于事件的隐式调用风格的思想是构件不直接调用 一个过程,而是触发或广播(broadcast)一个或多个事件 (在“源对象”和“监听者对象”之间,某种状态发生 变化的传递机制)。其它构件中的过程在一个或多个 事件中注册,当一个事件被触发,系统自动调用在这 个事件中注册的所有过程,这样,一个事件的触发就 导致了另一模块中的过程的调用。 从体系结构上说,这种风格的构件是一些模块, 这些模块既可以是一些过程,又可以是一些事件的集 合。过程可以用通用的方式调用,也可以在系统事件 中注册一些过程,当发生这些事件时,过程被调用