软件体系结构风格PPT课件
合集下载
软件体系结构课件第5章统一建模语言
2:GetPrefSet()
10:PrefSet(date_mg)
1:GetPrefSet()
:MeetingInitiator
第5章 统一建模语言 直接使用UML建模 – 会议安排系统的类图
Person
StronglyConflicts With
Conflicts With
Important Attendee
0..* 0..*
0..* Profers
Attendee
1..* 1..* 0..* 0..*
11 1 1
1
Meeting Initiator
Find.exe
Query .dll
部署图 定义系 统中软 硬件的 物理体
系结构
第5章 统一建模语言 部署图
客户端:个人PC QueryClient.exe
服务器
《TCP/IP》 查询
QueryServer.exe 部署图
定义系
统中软
Find.exe
硬件的
物理体
Query.dll系结构
第5章 统一建模语言
第5章 统一建模语言
直接使用UML建模 – UML中的通用表示
➢ 字符串:表示有关模型的信息; ➢ 名字:表示模型元素; ➢ 标号:不同于编程语言中的标号,是用于表示或说明图形符号的字
符串; ➢ 特殊字符串:表示某一模型元素的特性; ➢ 类型表达式:声明属性、变量及参数,含义同编程语言中的类型表
0
10
20
30s 时间刻度
第5章 统一建模语言 状态图
提交订单 已审核 印前处理
客户付钱
已付款
已处理
进行冲印
冲印中 冲印完成
描述满足 用例要求 所要进行 的活动以 及活动间 的完约成束关 系,有利 于识别并 行活动
软件系统设计概述PPT课件
软件的开发阶段
第6页/共60页
软件设计的重要性
为什么软件设计很重要?
软件设计是开发阶段中最重要的步骤,它是软件开发过 程中质量得以保证的关键步骤。设计提供了软件的表示, 使得软件的质量评价成为可能。
同时,软件设计又是将用户要求准确地转化成为最终的 软件产品的唯一途径。另一方面,软件设计是后续开发步 骤及软件维护工作的基础。如果没有设计,只能建立一个 不稳定的系统。
第7页/共60页
软件设计的重要性
只要出现一些小小的变动,就会使得软件垮掉,而且难于测试。
第8页/共60页
软件设计方法 F 结构化设计方法(SD) F 面向数据结构的设计方法(JSD方法) F 面向对象的设计方法(OOD)
第9页/共60页
软件设计的阶段
第10页/共60页
软件设计的阶段
(1)概要设计(总体设计) 确定软件的结构以及各组成成分(子
• 模块的内部特性
完成其功能的程序代码和仅供该模块内
第33页/共60页
模块设计ห้องสมุดไป่ตู้础
二.模块独立性
模块独立性, 是指软件系统中每个模块 只涉及软件要求的具体的子功能, 而与 软件系统中其它的模块的接口是简单的. 例如, 若一个模块只具有单一的功能且 与其它模块没有太多的联系, 则称此模 块具有模块独立性 一般采用两个准则度量模块独立性。即 模块间耦合和模块内聚
第28页/共60页
软件设计基础 七. 信息隐蔽
由 parnas 方法提倡的信息隐蔽是指,每个 模块的实现细节对于其它模块来说是隐蔽的。 也就是说,模块中所包含的信息(包括数据 和过程)不允许其它不需要这些信息的模块 使用。独立的模块间仅仅交换为完成系统功 能而必须交换的信息。
软件体系结构的三种风格
管道/过滤器风格
(3)数据的打包和解包 有时,系统中的过滤器需要有一个数据 转换器来对输入输出数据进行解包打包。 这样会降低系统性能,增加过滤器的复杂 性。
主程序/子程序风格
1.设计词汇表
主程序、子程序,过程、函数、模块 共享信息、调用/返回
2.构件和连接件类型
构件:各类子程序,过程、函数、模块 连接件:条件、循环、查询主程序/子程序风格
主程序/子程序风格
4.基本的计算模型
子程序在内部处理数据
5.风格的基本不变性
缺点:
1.通常导致进程成为批处理结构。 2.交互处理能力弱 这种风格是适合数据流的处理和变换,不适 合用户交互频繁的系统建模。每个过滤器都有自 己的数据,这些数据是从磁盘存储器读取,或从 另一个过滤器的输出导入进来,整个系统没有一 个共享的数据区。当用户要操作某一项数据时, 要涉及到多个过滤器对应数据的操作,其实现较 为复杂。
管道/过滤器风格
7.优缺点
优点: (1)使得软构件具有良好的隐蔽性和高内聚、低耦 合的特点。 (2)允许设计者将整个系统的输入/输出行为看成 是多个过滤器的行为的简单合成。
管道/过滤器风格
(3)系统易于维护和增强性能简单 旧的过滤器可有被替代,新的过滤器可以添 加到已有的系统上,系统的可维护性和可升级得 到了保证。
Main/Subroutine Architectural Style
主程序/子程序风格
– 这风格的体系结构是一种经典的编程范型,主 要应用在结构化程序设计当中。 – 这种风格是各程序之间是数据共享的。 – 这种风格的主要目的是将程序划分为若干小片 段,从而使程序的可更改性大大提高。 – 这种风格是单线程控制的。同一时刻只有一个 孩子结点的子程序可以得到父亲结点的控制。
软件体系结构描述语言 C2ppt课件
13
C2对于构件接口的描述
Component :: = Component component_name is Interface component_message_interface Parameters component_parameters Methods component_methods [behavior component_behavior] [context component_context] End component_name;
4
C2风格的中心原则
C2风格的中心原则是有限可视原则,或者说是下层 独立的原则: 在C2风格的体系结构中,某一构件只能感知层次高 于自己的构件所提供的服务,而不能感知到层次比 自己更低的构件的服务。 这种单向的传递性,有利于系统的维护和扩展。
5
C2风格的通信规则
C2中,所有构件间的通信必须通过消息来实现,这 也是构件之间的唯一通信途径。每个构件都有一个 顶端域、一个底端域。构件的顶端域定义了构件可 以对哪些通知做出响应,以及可以发出哪些请求; 构件的底端域定义了可以向下层发送哪些通知,以 及可以响应下层的哪些请求。
软件体系结构描述语言 C2
小组成员:
1
引言
软件体系结构是根植于软件工程发展起来的新兴学科,目前已经成为软件工 程研究和实践的一个重要领域。软件体系结构设计的一个核心问题是能否使 用重复的体系结构模式,即能否达到体系结构级的软件重用。也就是说,能 否在不同的软件系统中,使用同一体系结构。
C2体系结构风格作为一种经典的体系结构风格,它就具有平衡开发费用与近 产品的共同性的特性。按照C2体系结构风格的规则,我们能够把各种粒度的 构件集成到一个系统结构中。可以说,C2体系结构风格对软件结构和软件构 件交互定义了一个良好的设计规范,同时还具有广泛的试验和工具。因而, 它就为软件设计开发者提供了一个有界面密集的系统的软件体系结构风格。 在C2风格的体系结构中,连接件在构件之间转发消息,构件
软件体系结构软件体系结构的质量属性.精选PPT
44可修改性的一般场景生成可修改性的一般场景生成场景的部分可能的值刺激希望增加删除修改改变功能质量属性容量制品系统用户界面平台环境或与目标系统交互的系统环境在运行时编译时构建时设计时响应查找构架中需要修改的位置进行修改且不会影响其它功能对所做的修改进行测试部署所作的修改响应度量根据所影响的元素的数量度量的成本努力资金
下,能保证用户请求不丢失;
当系统出现故障或崩溃时,恢复 时间不超过两小时;
可维护性
修改某个子系统或服务时,不影
响其他子系统或服务;
性能
高峰时系统的平均响应时间控制
在20秒以内;
系统需求的获取
一般两种途径: 用户直接主动地提供的需求。主要是一些功能性需
求和领域知识。
另一条是构架师设计“对话问题”,通过对用户提 问,进一步与他们沟通,从而得到更明确的需求。
被动冗余 (暖重起)
New Data
1
2
Old Data Backup1
Main Component
Old Data
Backup2
Data
3
1. The main component receives new data. 2. The main component sends old data/state to backup components. 3. If fault happens, decision has to be made to what backup component to
Do Some Action 1 Controller
3
2 Process 1
Process 2
Process 3
1. Controller requests processes to do an action. 2. Each process receives request and works on the action. 3. A response is sent back from each process. If there is a fault, a recovery will be very fast. The controller could send out requests to check if a process is down and expect a receipt to show process up.
下,能保证用户请求不丢失;
当系统出现故障或崩溃时,恢复 时间不超过两小时;
可维护性
修改某个子系统或服务时,不影
响其他子系统或服务;
性能
高峰时系统的平均响应时间控制
在20秒以内;
系统需求的获取
一般两种途径: 用户直接主动地提供的需求。主要是一些功能性需
求和领域知识。
另一条是构架师设计“对话问题”,通过对用户提 问,进一步与他们沟通,从而得到更明确的需求。
被动冗余 (暖重起)
New Data
1
2
Old Data Backup1
Main Component
Old Data
Backup2
Data
3
1. The main component receives new data. 2. The main component sends old data/state to backup components. 3. If fault happens, decision has to be made to what backup component to
Do Some Action 1 Controller
3
2 Process 1
Process 2
Process 3
1. Controller requests processes to do an action. 2. Each process receives request and works on the action. 3. A response is sent back from each process. If there is a fault, a recovery will be very fast. The controller could send out requests to check if a process is down and expect a receipt to show process up.
《软件体系结构风格》课件
应用领域:Web 应用程序、企业级 应用、移动应用等
优点:易于维护、 扩展性好、安全性 高
实践应用案例: Google、 Facebook、 Amazon等公司的 Web应用程序
分布式对象风格的实践应用
特点:松耦合、高内聚、可扩展性 应用场景:大型企业级应用、分布式系统 技术实现:RPC、SOAP、RESTful等 案例:亚马逊、谷歌、Facebook等公司的分布式系统
开发团队:考虑团 队的技术水平、经 验、技能等
技术趋势:考虑当 前和未来的技术发 展趋势,如云计算 、大数据、人工智 能等
成本预算:考虑开 发、维护、升级等 成本预算,选择合 适的体系结构风格
软件体系结构风格的适用场景
软件体系结构风格的优缺点分析
Part Five
软件体系结构风格 的实践应用
集中式风格的实践应用
软件体系结构风格是软件设计的重要组成部分,它直接影响到软件的可维护性、可扩 展性和可重用性。
软件体系结构风格分类
模块化风格:将系统划分 为多个模块,每个模块负 责特定的功能
分层风格:将系统划分为 多个层次,每个层次负责 特定的功能
管道与过滤器风格:将系 统划分为多个过滤器,每 个过滤器负责特定的功能
三层C/S风格
特点:客户端和服务器端分离,中间层负责数据传输和处理
优点:客户端和服务器端可以独立开发,便于维护和升级
缺点:中间层需要处理大量数据,可能导致性能瓶颈 应用场景:适用于需要大量数据处理和传输的场景,如银行、证券等金 融行业。
浏览器-服务器风格
特点:客户端和 服务器端分离, 客户端负责用户 界面,服务器端 负责数据处理和 存储
面向对象风格:将系统划 分为多个对象,每个对象 负责特定的功能
第三章软件体系结构风格与模式
SAGroupSAGroupSAGro
Software ArchitecturuepSAGroup
软件体系结构的风格和模式
1
建筑模式
SAGroupSAGroupSAGro upSAGroup
❖ Christopher Alexander, The Timeless Way of
Building, p247, 1979
8
SAGroupSAGroupSAGro
管道-过滤器风格特u性pSAGroup
❖ 过滤器是独立运行的构件
▪ 非临近的过滤器之间不共享状态 ▪ 过滤器自身无状态
❖ 过滤器对其处理上下连接的过滤器“无知”
▪ 对相邻的过滤器不施加任何限制
❖ 结果的正确性不依赖于各个过滤器运行的先后次序
▪ 各过滤器在输入具备后完成自己的计算。完整的计算过程包含 在过滤器之间的拓扑结构中。
12
SAGroupSAGroupSAGro
管道-过滤器风格优u点pSAGroup
❖ 管道-过滤器风格支持功能模块的复用
▪ 任何两个过滤器,只要它们之间传送的数据遵守共同的规约, 就可以相连接。每个过滤器都有自己独立的输入输出接口,如 果过滤器间传输的数据遵守其规约,只要用管道将它们连接就 可以正常工作。
Splitter
MergeAndSort
MergeAndSort
Merge
Sort
11
SAGroupSAGroupSAGro
管道-过滤器风格优u点pSAGroup
❖ 设计者可以将整个系统的输入、输出特性简单的理解为 各个过滤器功能的合成。
▪ 设计人员将整个系统的输入输出行为理解为单个过滤器行为的 叠加与组合。这样可以将问题分解,化繁为简。将系统抽象成 一个“黑箱”,其输入是系统中第一个过滤器的输入管道,输 出是系统中最后一个过滤器的输出管道,而其内部各功能模块 的具体实现对用户完全透明。
Software ArchitecturuepSAGroup
软件体系结构的风格和模式
1
建筑模式
SAGroupSAGroupSAGro upSAGroup
❖ Christopher Alexander, The Timeless Way of
Building, p247, 1979
8
SAGroupSAGroupSAGro
管道-过滤器风格特u性pSAGroup
❖ 过滤器是独立运行的构件
▪ 非临近的过滤器之间不共享状态 ▪ 过滤器自身无状态
❖ 过滤器对其处理上下连接的过滤器“无知”
▪ 对相邻的过滤器不施加任何限制
❖ 结果的正确性不依赖于各个过滤器运行的先后次序
▪ 各过滤器在输入具备后完成自己的计算。完整的计算过程包含 在过滤器之间的拓扑结构中。
12
SAGroupSAGroupSAGro
管道-过滤器风格优u点pSAGroup
❖ 管道-过滤器风格支持功能模块的复用
▪ 任何两个过滤器,只要它们之间传送的数据遵守共同的规约, 就可以相连接。每个过滤器都有自己独立的输入输出接口,如 果过滤器间传输的数据遵守其规约,只要用管道将它们连接就 可以正常工作。
Splitter
MergeAndSort
MergeAndSort
Merge
Sort
11
SAGroupSAGroupSAGro
管道-过滤器风格优u点pSAGroup
❖ 设计者可以将整个系统的输入、输出特性简单的理解为 各个过滤器功能的合成。
▪ 设计人员将整个系统的输入输出行为理解为单个过滤器行为的 叠加与组合。这样可以将问题分解,化繁为简。将系统抽象成 一个“黑箱”,其输入是系统中第一个过滤器的输入管道,输 出是系统中最后一个过滤器的输出管道,而其内部各功能模块 的具体实现对用户完全透明。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
特点: 1.构件是模块,模块可以是过程也可以是事件的集
合。 2.连接件:往往是以过程之间的隐式调用(Implicit
Invocation)来实现的
.
15
例:观察者模式
public interface Subject { public void attach (Observer observer);
◎难以进行错误处理,管道/过滤器结构的固有特性,决定了 很难制定错误处理的一般性策略
.
9
实例: 传统的编译器是管道/过滤器体系结构风格的一个实例
源 程
词法分析
序
语法分析
语义分析
目 标 中间代码生成 中间代码优化 目标代码生成 程 序
.
10
面向对象风格
这种风格建立在数据抽象和面向对象的基础上, 数据的表示方法和它们的相应操作封装在一个抽象 数据类型或对象中。
体系结构风格最关键的四要素
◎ 提供一个词汇表
◎ 定义一套配置规则
◎ 定义一套语义解释原则
◎ 定义对基于这种风格的系统所进行的分析
.
4
体系结构的风格有哪些? 管道-过滤器风格 面向对象风格 事件驱动风格 分层风格 数据共享风格 解释器风格 反馈控制环风格
.
5
管道-过滤器风格
特点: 1.每个构件都有输入输出,构件完成对输入数据的处
软件体系结构风格
.
1
软件框架设计的核心问题是:能否复用已经成型的 体系结构方案
不同系统的设计方案存在着许多共性问题,把这些 共性部分抽取出来,就形成了具有代表性的和可广 泛接受的体系结构风格
.
2
体系结构风格
什么是软件体系结构风格? 软件体系结构风格是描述某一特定应用领域中系统组
织方式的惯用模式。 软件体系结构风格的作用是什么? 1.指导如何将各个模块和子系统有效地组织成一个完
.
8
缺点 ◎ 通常导致进程成为批处理的结构。这是因为虽然过滤器
可增量式地处理数据,但它们是独立的,所以设计者必须 将每个过滤器看成一个完整的从输入到输出的转换。
◎ 不适合处理交互的应用。当需要增量地显示改变时,这 个问题尤为严重。
◎ 因为在数据传输上没有通用的标准,每个过滤器都增加 了解析和合成数据的工作,这样就导致了系统性能下降, 并增加了编写过滤器的复杂性。
public void detach (Observer observer);
void notifyObservers(); }
.
16
public class ConcreteSubject implements Subject { public void attach(Observer observer) { observersVector.addElement(observer); } public void detach(Observer observer) { observersVector.removeElement(observer); } public void notifyObservers() { Enumeration enumeration = observers(); while (enumeration.hasMoreElements()) { ((Observer)enumeration.nextElement()).update(); } } public Enumeration observers() { return ((Vector) observersVector.clone()).elements(); } private Vector observersVector = new java.util.Vector(); }
整的系统。 2.有关风格的使用带来了设计者的交流形式。关于设
计元素的词汇促进了设计者理解和交流。 3.使用风格能够使代码的重用性得到提高。当用不同
的系统时,基本的架构代码风格不需要修改,它能 够用于不同的系统中。
.
3
对于高质量的软件产品而言,首先要为其选择合 适的体系结构风格,这样就能够更好地重用已有 的设计方案和实现方案
特点: 1.对象是构件。 2.在对象和对象之间,通过函数调用和过程调用来进
行交互。
.
11
对象
对象
对象
抽象数
据类型
对象 对象
过程调用
.
12
优点
◎一个对象对外界隐藏了自己的详细信息,改变一个 对象的表示,不会影响系统的其它部分
◎继承和封装方法为对象复用提供了技术支持。
◎对象将数据和操作封装在一起,提高了系统内聚性, 减小了模块之间的耦合程度,使系统更容易分解为既 相互作用又相互独立的对象集合
.
17
public interface Observer { void update(); }
public static void main(String args[]){ Subject s=new ConcreteSubject(); s.attach(new Observer(){ public void update(){ System.out.println("ok"); } }); s.notifyer();
理产生输出。 2.构件之间相对独立,相互之间无交互状态,非邻近
过滤器不共享任何信息。 3.整个体系结构的最终输出与格构件执行的顺序无关。 词汇: 过滤器:构件 管道:连接
.
6
过滤器
管道
.
7
优点
◎使得软构件具有良好的隐蔽性和高内聚、低耦合的特点; ◎ 允许设计者将整个系统的输入/输出行为看成是多个过滤器的行为的 简单合成; ◎ 支持软件重用。只要提供适合在两个过滤器之间传送的数据,任何两 个过滤器都可被连接起来; ◎ 系统维护和增强系统性能简单。新的过滤器可以添加到现有系统中来; 旧的可以被改进的过滤器替换掉; ◎ 允许对一些如吞吐量、死锁等属性的分析; ◎ 支持并行执行。每个过滤器是作为一个单独的任务完成,因此可与其 它任务并行执行。
.
13
缺点:
◎如果一个对象要调用另一个对象,则必须知道它的标识和 名称
◎会产生连锁反应,如果一个对象的标识发生改变,那么必 须修改所有显式调用它的其它对象,并消除由此引发的副作 用
.
14
事触发或广播一个 或多个事件。系统中的其它构件中的过程在一个 或多个事件中注册,当一个事件被触发,系统自 动调用在这个事件中注册的所有过程,这样,一 个事件的触发就导致了另一模块中的过程的调用。
合。 2.连接件:往往是以过程之间的隐式调用(Implicit
Invocation)来实现的
.
15
例:观察者模式
public interface Subject { public void attach (Observer observer);
◎难以进行错误处理,管道/过滤器结构的固有特性,决定了 很难制定错误处理的一般性策略
.
9
实例: 传统的编译器是管道/过滤器体系结构风格的一个实例
源 程
词法分析
序
语法分析
语义分析
目 标 中间代码生成 中间代码优化 目标代码生成 程 序
.
10
面向对象风格
这种风格建立在数据抽象和面向对象的基础上, 数据的表示方法和它们的相应操作封装在一个抽象 数据类型或对象中。
体系结构风格最关键的四要素
◎ 提供一个词汇表
◎ 定义一套配置规则
◎ 定义一套语义解释原则
◎ 定义对基于这种风格的系统所进行的分析
.
4
体系结构的风格有哪些? 管道-过滤器风格 面向对象风格 事件驱动风格 分层风格 数据共享风格 解释器风格 反馈控制环风格
.
5
管道-过滤器风格
特点: 1.每个构件都有输入输出,构件完成对输入数据的处
软件体系结构风格
.
1
软件框架设计的核心问题是:能否复用已经成型的 体系结构方案
不同系统的设计方案存在着许多共性问题,把这些 共性部分抽取出来,就形成了具有代表性的和可广 泛接受的体系结构风格
.
2
体系结构风格
什么是软件体系结构风格? 软件体系结构风格是描述某一特定应用领域中系统组
织方式的惯用模式。 软件体系结构风格的作用是什么? 1.指导如何将各个模块和子系统有效地组织成一个完
.
8
缺点 ◎ 通常导致进程成为批处理的结构。这是因为虽然过滤器
可增量式地处理数据,但它们是独立的,所以设计者必须 将每个过滤器看成一个完整的从输入到输出的转换。
◎ 不适合处理交互的应用。当需要增量地显示改变时,这 个问题尤为严重。
◎ 因为在数据传输上没有通用的标准,每个过滤器都增加 了解析和合成数据的工作,这样就导致了系统性能下降, 并增加了编写过滤器的复杂性。
public void detach (Observer observer);
void notifyObservers(); }
.
16
public class ConcreteSubject implements Subject { public void attach(Observer observer) { observersVector.addElement(observer); } public void detach(Observer observer) { observersVector.removeElement(observer); } public void notifyObservers() { Enumeration enumeration = observers(); while (enumeration.hasMoreElements()) { ((Observer)enumeration.nextElement()).update(); } } public Enumeration observers() { return ((Vector) observersVector.clone()).elements(); } private Vector observersVector = new java.util.Vector(); }
整的系统。 2.有关风格的使用带来了设计者的交流形式。关于设
计元素的词汇促进了设计者理解和交流。 3.使用风格能够使代码的重用性得到提高。当用不同
的系统时,基本的架构代码风格不需要修改,它能 够用于不同的系统中。
.
3
对于高质量的软件产品而言,首先要为其选择合 适的体系结构风格,这样就能够更好地重用已有 的设计方案和实现方案
特点: 1.对象是构件。 2.在对象和对象之间,通过函数调用和过程调用来进
行交互。
.
11
对象
对象
对象
抽象数
据类型
对象 对象
过程调用
.
12
优点
◎一个对象对外界隐藏了自己的详细信息,改变一个 对象的表示,不会影响系统的其它部分
◎继承和封装方法为对象复用提供了技术支持。
◎对象将数据和操作封装在一起,提高了系统内聚性, 减小了模块之间的耦合程度,使系统更容易分解为既 相互作用又相互独立的对象集合
.
17
public interface Observer { void update(); }
public static void main(String args[]){ Subject s=new ConcreteSubject(); s.attach(new Observer(){ public void update(){ System.out.println("ok"); } }); s.notifyer();
理产生输出。 2.构件之间相对独立,相互之间无交互状态,非邻近
过滤器不共享任何信息。 3.整个体系结构的最终输出与格构件执行的顺序无关。 词汇: 过滤器:构件 管道:连接
.
6
过滤器
管道
.
7
优点
◎使得软构件具有良好的隐蔽性和高内聚、低耦合的特点; ◎ 允许设计者将整个系统的输入/输出行为看成是多个过滤器的行为的 简单合成; ◎ 支持软件重用。只要提供适合在两个过滤器之间传送的数据,任何两 个过滤器都可被连接起来; ◎ 系统维护和增强系统性能简单。新的过滤器可以添加到现有系统中来; 旧的可以被改进的过滤器替换掉; ◎ 允许对一些如吞吐量、死锁等属性的分析; ◎ 支持并行执行。每个过滤器是作为一个单独的任务完成,因此可与其 它任务并行执行。
.
13
缺点:
◎如果一个对象要调用另一个对象,则必须知道它的标识和 名称
◎会产生连锁反应,如果一个对象的标识发生改变,那么必 须修改所有显式调用它的其它对象,并消除由此引发的副作 用
.
14
事触发或广播一个 或多个事件。系统中的其它构件中的过程在一个 或多个事件中注册,当一个事件被触发,系统自 动调用在这个事件中注册的所有过程,这样,一 个事件的触发就导致了另一模块中的过程的调用。