




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、武汉大学武汉大学UNIT TWENTY-ONEUNIT 21 设计模式导论设计模式导论主讲人:谭成予主讲人:谭成予 副教授副教授 武汉大学计算机学院武汉大学计算机学院E-MAIL:武汉大学武汉大学UNIT TWENTY-ONE2“Next to My Life, Software Is My Passion” Robert C.Martin. 懂了设计模式,就懂了面向对象分析和设计(懂了设计模式,就懂了面向对象分析和设计(OOA/D)的精要。反之好像也可能成立。道可道,非常道。道不的精要。反之好像也可能成立。道可道,非常道。道不远人,设计模式亦然如此。远人,设计模式亦然如此。武汉大学武汉大学U
2、NIT TWENTY-ONE31.1.模式与设计模式模式与设计模式2.2.描述设计模式描述设计模式3.3.应用设计模式解决设计问题应用设计模式解决设计问题4.4.选择设计模式选择设计模式5.5.使用设计模式使用设计模式6.6.常用设计模式简介常用设计模式简介本讲的提纲本讲的提纲武汉大学武汉大学UNIT TWENTY-ONE41.1 实例体会:简单工厂模式下实例体会:简单工厂模式下的运算器程序的运算器程序u编写程序实现以下的功能:计算器控制台程序,要求输编写程序实现以下的功能:计算器控制台程序,要求输入两个操作数和一个运算符。入两个操作数和一个运算符。 该程序采用简单工厂模式处理!该程序采用简单
3、工厂模式处理!GetResult()OperationGetResult()OperationAddGetResult()OperationSubGetResult()OperationMulGetResult()OperationDivGetResult()OperationFactory武汉大学武汉大学UNIT TWENTY-ONE51.2 模式与设计模式模式与设计模式Christopher Alexander:每一个模式描述了一个在我们周围不断重复:每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一发生的问题,以及该问题的解决方案的核心。这
4、样,你就能一次又一次地使用该方案而不必重复劳动。次地使用该方案而不必重复劳动。 (他说的是城市和建筑模式)(他说的是城市和建筑模式)模式的四个基本要素:模式的四个基本要素:u 模式名称:模式名称:唯一标识模式,一个助记名。唯一标识模式,一个助记名。u 问题:问题:描述了应该在何时使用模式,特定的设计问题。描述了应该在何时使用模式,特定的设计问题。u 解决方案:解决方案:描述了设计的组成成分,以及它们之间的相互关系、职描述了设计的组成成分,以及它们之间的相互关系、职责和协作方式。责和协作方式。u 效果:效果:模式应用的效果及使用模式应权衡的问题。模式效果对系统模式应用的效果及使用模式应权衡的问题
5、。模式效果对系统的灵活性、扩充性或可移植性的影响。的灵活性、扩充性或可移植性的影响。武汉大学武汉大学UNIT TWENTY-ONE61.3 设计模式解析设计模式解析设计模式之于面向对象系统的设计和开发的作用就有如数设计模式之于面向对象系统的设计和开发的作用就有如数据结构之于面向过程开发的作用一般据结构之于面向过程开发的作用一般!u 面向对象系统的分析和设计实际上追求的就是两点,一面向对象系统的分析和设计实际上追求的就是两点,一是高内聚(是高内聚(Cohesion),而是低耦合(),而是低耦合(Coupling)。)。u 面向对象的原则:封装、继承和多态、面向接口编程、面向对象的原则:封装、继承
6、和多态、面向接口编程、优先使用组合而不是继承、将抽象和实现分离的思想。优先使用组合而不是继承、将抽象和实现分离的思想。武汉大学武汉大学UNIT TWENTY-ONE71.3 设计模式解析设计模式解析设计模式体现的是一种思想,而思想则是指导行为的一切,设计模式体现的是一种思想,而思想则是指导行为的一切,理解和掌握了设计模式,并不是说记住了理解和掌握了设计模式,并不是说记住了23种(或更多)种(或更多)设计场景和解决策略(实际上这也是很重要的一笔财富),设计场景和解决策略(实际上这也是很重要的一笔财富),实际接受的是一种思想的熏陶和洗礼,等这种思想融入到实际接受的是一种思想的熏陶和洗礼,等这种思想
7、融入到了你的思想中后,你就会不自觉地使用这种思想去进行你了你的思想中后,你就会不自觉地使用这种思想去进行你的设计和开发,这一切才是最重要的。的设计和开发,这一切才是最重要的。 武汉大学武汉大学UNIT TWENTY-ONE82 描述设计模式描述设计模式设计模式的目的:设计复用!设计模式的目的:设计复用!u 图形符号:图形符号:远远不够,只是将设计过程的结果简单记远远不够,只是将设计过程的结果简单记录为类和对象之间的关系。录为类和对象之间的关系。u 用统一格式描述设计模式,每一个模式根据模板被封用统一格式描述设计模式,每一个模式根据模板被封为若干部分。模板具有统一的信息描述结构:为若干部分。模板
8、具有统一的信息描述结构:1. 1.模式名和分类:简洁地描述了模式的本质模式名和分类:简洁地描述了模式的本质2. 2.意图:回答问题意图:回答问题“设计模式是做什么的?原理和意图?设计模式是做什么的?原理和意图?”3. 3.别名别名4. 4.动机:说明设计问题以及使用模式中的类、对象来解决该问动机:说明设计问题以及使用模式中的类、对象来解决该问题的特定场景。该场景将帮助你理解对模式的描述。题的特定场景。该场景将帮助你理解对模式的描述。5. 5.适用性:什么情况下使用该设计模式?适用性:什么情况下使用该设计模式?武汉大学武汉大学UNIT TWENTY-ONE92 描述设计模式描述设计模式u用统一格
9、式描述设计模式,每一个模式根据模板被封用统一格式描述设计模式,每一个模式根据模板被封为若干部分。模板具有统一的信息描述结构:为若干部分。模板具有统一的信息描述结构:6. 6.结构:采用基于对象建模技术的表示法对模式中的类进行图结构:采用基于对象建模技术的表示法对模式中的类进行图形描述。形描述。7. 7.参与者:设计模式中的类和参与者:设计模式中的类和/ /或对象以及它们各自的职责。或对象以及它们各自的职责。8. 8.协作:模式的参与者怎样协作以实现它们的职责。协作:模式的参与者怎样协作以实现它们的职责。9. 9.效果:模式怎样支持它的目标?使用模式的效果和所需做的效果:模式怎样支持它的目标?使
10、用模式的效果和所需做的权衡舍取?系统结构的哪些方面可以独立改变?权衡舍取?系统结构的哪些方面可以独立改变?10.10.实现:实现模式时需要的提示、技术要点以及以避免的缺陷,实现:实现模式时需要的提示、技术要点以及以避免的缺陷,以及实现语言存在的问题。以及实现语言存在的问题。武汉大学武汉大学UNIT TWENTY-ONE102 描述设计模式描述设计模式u用统一格式描述设计模式,每一个模式根据模板被封用统一格式描述设计模式,每一个模式根据模板被封为若干部分。模板具有统一的信息描述结构:为若干部分。模板具有统一的信息描述结构:11.11.代码示例:实现该模式的代码片段。代码示例:实现该模式的代码片段
11、。12.12.已知应用:实际系统中发现的模式的例子。已知应用:实际系统中发现的模式的例子。13.13.相关模式:关系紧密的模式有哪些?不同之处在哪里?如何相关模式:关系紧密的模式有哪些?不同之处在哪里?如何一起使用?一起使用?武汉大学武汉大学UNIT TWENTY-ONE113 应用设计模式解决设计问题应用设计模式解决设计问题u寻找合适的对象:寻找合适的对象:u面向对象设计最困难的部分:将系统分解为对象集合,这个面向对象设计最困难的部分:将系统分解为对象集合,这个过程中需要考虑封装、粒度、依赖关系、灵活性、性能、演过程中需要考虑封装、粒度、依赖关系、灵活性、性能、演化、复用等因素。化、复用等因
12、素。u虽然设计的许多对象来源与现实世界的分析模型,但设计结虽然设计的许多对象来源与现实世界的分析模型,但设计结果中的类通常在现实世界中并不存在。设计模式帮你确定不果中的类通常在现实世界中并不存在。设计模式帮你确定不明显的抽象和描述这些抽象的对象。例如明显的抽象和描述这些抽象的对象。例如Strategy模式描述了模式描述了怎样实现空间互换的算法族。怎样实现空间互换的算法族。武汉大学武汉大学UNIT TWENTY-ONE123 应用设计模式解决设计问题应用设计模式解决设计问题u决定对象的粒度:决定对象的粒度:Faade模式描述了怎样用对象表模式描述了怎样用对象表示完整的子系统;示完整的子系统;Fl
13、yweight描述了如何支持大量的最描述了如何支持大量的最小粒度的对象等。小粒度的对象等。u指定对象接口:指定对象接口:操作的型构(对象声明的每一个操作的操操作的型构(对象声明的每一个操作的操作名、作为参数的对象和返回值)的集合就是对象的接口。作名、作为参数的对象和返回值)的集合就是对象的接口。u描述对象的实现:描述对象的实现:OMT表示法表示法武汉大学武汉大学UNIT TWENTY-ONE133 应用设计模式解决设计问题应用设计模式解决设计问题u运用复用机制运用复用机制:u优先使用对象组合,而不是类继承:优先使用对象组合,而不是类继承:功能复用最常用的技术功能复用最常用的技术是类继承(白箱复
14、用,编译时静态定义)和对象组合(黑箱是类继承(白箱复用,编译时静态定义)和对象组合(黑箱复用,运行时刻动态定义)复用,运行时刻动态定义)u委托:委托:接收请求的对象把操作委托给它的代理者,例如在类接收请求的对象把操作委托给它的代理者,例如在类A中保存一个类中保存一个类B的实例,来代理类的实例,来代理类B的特定操作。对象组合的特定操作。对象组合的特例。的特例。u参数化类型:参数化类型:非严格的面向对象功能复用技术,即用类属或非严格的面向对象功能复用技术,即用类属或模板。模板。u关联运行时刻和编译时刻的结构:关联运行时刻和编译时刻的结构:代码结构在编译时刻就代码结构在编译时刻就被确定下来,它由固定
15、继承关系的类组成。而运行时刻结构是由被确定下来,它由固定继承关系的类组成。而运行时刻结构是由快速变化的通信对象网络组成。二者是独立的!快速变化的通信对象网络组成。二者是独立的!武汉大学武汉大学UNIT TWENTY-ONE143 应用设计模式解决设计问题应用设计模式解决设计问题u设计应支持变化设计应支持变化 可能引发重新设计的一般原因:可能引发重新设计的一般原因:u通过显式地指定一个类来创建对象:通过显式地指定一个类来创建对象:Abstract Factory、Factory Method、Prototypeu对特殊操作的依赖:对特殊操作的依赖:Chain of Resposibility、C
16、ommandu对硬件和软件平台的依赖:对硬件和软件平台的依赖: Abstract Factory、Bridgeu对对象表示或实现的依赖:对对象表示或实现的依赖:Abstract Factory、Bridge、Memento、Proxyu算法依赖:算法依赖:Builder、Iterator、Strategy、Template Method、Visitor武汉大学武汉大学UNIT TWENTY-ONE153 应用设计模式解决设计问题应用设计模式解决设计问题u设计应支持变化设计应支持变化 可能引发重新设计的一般原因:可能引发重新设计的一般原因:u紧耦合:紧耦合:Abstract Factory、Co
17、mmand、Mediator、Observer、Chain of Responisibilityu通过生成子类来扩充功能:通过生成子类来扩充功能:Bridge、Chain of Resposibility、Composite、Decorator、 Observer、 Strategyu不能方便的对类修改:不能方便的对类修改: Adaptor、 Decorator、 Visitor武汉大学武汉大学UNIT TWENTY-ONE164 选择设计模式选择设计模式u考虑设计模式是怎样解决设计问题的考虑设计模式是怎样解决设计问题的u浏览模式的意图部分浏览模式的意图部分u研究模式怎样相互关联研究模式怎样相
18、互关联u研究目的相似的模式研究目的相似的模式u检查重新设计的原因检查重新设计的原因u考虑你的设计中哪些是可变的考虑你的设计中哪些是可变的武汉大学武汉大学UNIT TWENTY-ONE175 使用设计模式使用设计模式u浏览一遍模式浏览一遍模式u回头研究结构部分、参与者部分和协作部分回头研究结构部分、参与者部分和协作部分u看代码示例部分,分析该模式代码实例看代码示例部分,分析该模式代码实例u选择模式参与者的名字,使得它们在上下文中有意义选择模式参与者的名字,使得它们在上下文中有意义u定义类定义类u定义模式中专用于应用的操作名称定义模式中专用于应用的操作名称u实现执行模式中责任和协作的操作实现执行模
19、式中责任和协作的操作武汉大学武汉大学UNIT TWENTY-ONE186 常用设计模式简介常用设计模式简介共共23种模式,按照目的相似分为三类种模式,按照目的相似分为三类u创建型设计模式:创建型设计模式:描述实例化对象的相关技术,解决描述实例化对象的相关技术,解决创建对象的有关问题创建对象的有关问题u结构型设计模式:结构型设计模式:描述在软件系统中组织类和对象的描述在软件系统中组织类和对象的方法,避免在一个类被赋予过多职责而破坏类的封装方法,避免在一个类被赋予过多职责而破坏类的封装型和信息的隐藏,以及类之间功能重叠的问题型和信息的隐藏,以及类之间功能重叠的问题u行为设计模式:行为设计模式:负责
20、分配对象的职责,为对象间协作负责分配对象的职责,为对象间协作建模提供有效的策略建模提供有效的策略武汉大学武汉大学UNIT TWENTY-ONE196 常用设计模式简介常用设计模式简介创建型设计模式创建型设计模式uAbstract Factory工工厂模式厂模式 :为创建一系列相关的或者相互依赖为创建一系列相关的或者相互依赖的对象配置接口,而不必执行它们具体的类。支持设计可变的部的对象配置接口,而不必执行它们具体的类。支持设计可变的部分:产品对象家族分:产品对象家族客户类和工厂类分开。消费者任何时候需要某种产品,只需向工客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无
21、须修改就可以接纳新产品。缺点是当产品厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。端提供。武汉大学武汉大学UNIT TWENTY-ONE206 常用设计模式简介常用设计模式简介创建型设计模式创建型设计模式uBuilder Method建造模式建造模式 :将复杂的对象创建与它的表示分离,将复杂的对象创建与它的表示分离,使用同样的构建过程可以创建不同的表示。支持设计可变的部分:使用同样的构建过程可以创建不同的表示。支持设计可变的部分:如何创建一个组合对象如何创建一个组合
22、对象将产品的内部表象和产品的生成过程分割开来,从而使一个建造将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。建部表象可以独立的变化,客户不必知道产品内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。造模式可以强制实行一种分步骤进行的建造过程。武汉大学武汉大学UNIT TWENTY-ONE216 常用设计模式简介常用设计模式简介创建型设计模式创建型设计模式uFactory Method工厂方法工厂方法模式:模式:
23、定义一个创建对象的接口,但却定义一个创建对象的接口,但却让一个子类来决定具体实例化哪一个类。支持设计可变的部分:让一个子类来决定具体实例化哪一个类。支持设计可变的部分:被实例化的子类被实例化的子类核心工厂类不再负责所有产品的创建,而是将具体创建的工作交核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。须实现的接口,而不接触哪一个产品类应当被实例化这种细节。 武汉大学武汉大学UNIT TWENTY-ONE226 常用设计模式
24、简介常用设计模式简介创建型设计模式创建型设计模式uPrototype原始模型原始模型模式:模式:使用原型实例指定创建对象的种类,而使用原型实例指定创建对象的种类,而通过拷贝这个原型实例来创建新的实例。支持设计可变的部分:通过拷贝这个原型实例来创建新的实例。支持设计可变的部分:被实例化的类被实例化的类原始模型模式允许动态的增加或减少产品类,产品类不需要非得原始模型模式允许动态的增加或减少产品类,产品类不需要非得有任何事先确定的等级结构,原始模型模式适用于任何的等级结有任何事先确定的等级结构,原始模型模式适用于任何的等级结构。缺点是每一个类都必须配备一个克隆方法。构。缺点是每一个类都必须配备一个克
25、隆方法。 uSingleton单例单例模式:模式:保证在运行的应用程序中,一个类只实例化保证在运行的应用程序中,一个类只实例化一次,并提供一个访问它的全局访问点。支持设计可变的部分:一次,并提供一个访问它的全局访问点。支持设计可变的部分:一个类的唯一实例一个类的唯一实例单例模式只应在有真正的单例模式只应在有真正的“单一实例单一实例”的需求时才可使用。的需求时才可使用。 武汉大学武汉大学UNIT TWENTY-ONE236 常用设计模式简介常用设计模式简介结构型设计模式结构型设计模式uAdapter适配器(变压器)适配器(变压器)模式:模式:把一个类的接口变换成客户端把一个类的接口变换成客户端所
26、期望的另一种接口,从而使原本因接口不匹配而无法一起使用所期望的另一种接口,从而使原本因接口不匹配而无法一起使用的两个类那个一起使用。支持设计可变的部分:对象的接口的两个类那个一起使用。支持设计可变的部分:对象的接口适配类可以根据参数返还一个合适的实例给客户端。适配类可以根据参数返还一个合适的实例给客户端。 uBridge桥梁桥梁模式:模式:将一个复杂对象的构建与它的表示分离,使得将一个复杂对象的构建与它的表示分离,使得二者可以独立变化。支持设计可变的部分:对象的实现二者可以独立变化。支持设计可变的部分:对象的实现将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将将抽象化与实现化脱耦,使得
27、二者可以独立的变化,也就是说将他们之间的强关联变成弱关联,也就是指在一个软件系统的抽象他们之间的强关联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者聚合关系而不是继承关系,从而使两者可以独立的变化。可以独立的变化。 武汉大学武汉大学UNIT TWENTY-ONE246 常用设计模式简介常用设计模式简介结构型设计模式结构型设计模式uComposite合成合成模式:模式:将对象组织到树结构中,可以用来描述整将对象组织到树结构中,可以用来描述整体和部分的关系。支持设计可变的部分:一个对象的结构和组成体和部分的关系。支持设计可变
28、的部分:一个对象的结构和组成合成模式就是一个处理对象的树结构的模式。合成模式把部分与合成模式就是一个处理对象的树结构的模式。合成模式把部分与整体的关系用树结构表示出来。合成模式使得客户端把一个个单整体的关系用树结构表示出来。合成模式使得客户端把一个个单独的成分对象和由他们复合而成的合成对象同等看待。独的成分对象和由他们复合而成的合成对象同等看待。uDecorator装饰装饰模式:模式:动态给一个对象增加功能,这些功能可以在动态给一个对象增加功能,这些功能可以在动态地撤销。支持设计可变的部分:对象的职责,不生成子类动态地撤销。支持设计可变的部分:对象的职责,不生成子类装饰模式以对客户端透明的方式
29、扩展对象的功能,是继承关系的装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案,提供比继承更多的灵活性。动态给一个对象增加一个替代方案,提供比继承更多的灵活性。动态给一个对象增加功能,这些功能可以再动态的撤消。增加由一些基本功能的排列功能,这些功能可以再动态的撤消。增加由一些基本功能的排列组合而产生的非常大量的功能。组合而产生的非常大量的功能。 武汉大学武汉大学UNIT TWENTY-ONE256 常用设计模式简介常用设计模式简介结构型设计模式结构型设计模式uFacade门面门面模式:模式:为一个复杂系统提供了一个简单的接口,即提为一个复杂系统提供了一个简单的接口,即提供一个
30、高层次的接口,使得系统更易于使用。供一个高层次的接口,使得系统更易于使用。每一个子系统只有每一个子系统只有一个门面类,而且此门面类只有一个实例,也就是说它是一个单一个门面类,而且此门面类只有一个实例,也就是说它是一个单例模式。但整个系统可以有多个门面类。例模式。但整个系统可以有多个门面类。支持设计可变的部分:支持设计可变的部分:一个子系统的接口一个子系统的接口uFlyweight享元享元模式:模式:创建共享对象的一个小型池,以共享方式高创建共享对象的一个小型池,以共享方式高校的支持大量的细粒度对象。支持设计可变的部分:对象的存储校的支持大量的细粒度对象。支持设计可变的部分:对象的存储开销开销元
31、模式大幅度的降低内存中对象的数量元模式大幅度的降低内存中对象的数量 武汉大学武汉大学UNIT TWENTY-ONE266 常用设计模式简介常用设计模式简介结构型设计模式结构型设计模式uProxy代理代理模式:模式:给某一个对象提供一个代理对象,并由代理对给某一个对象提供一个代理对象,并由代理对象控制原来对象的引用。支持设计可变的部分:如何访问一个对象控制原来对象的引用。支持设计可变的部分:如何访问一个对象;该对象的位置。象;该对象的位置。uChain of Resposibility责任链责任链模式:模式:将很多对象连接起来形成一条将很多对象连接起来形成一条链。请求在这个链上传递,直到链上的某
32、一个对象决定处理此请链。请求在这个链上传递,直到链上的某一个对象决定处理此请求为止。支持设计可变的部分:满足一个请求的对象求为止。支持设计可变的部分:满足一个请求的对象武汉大学武汉大学UNIT TWENTY-ONE276 常用设计模式简介常用设计模式简介行为设计模式行为设计模式uCommand命令命令模式:模式:把一个请求或者操作封装到一个对象中,允把一个请求或者操作封装到一个对象中,允许请求的一方和发送的一方独立开来。支持设计可变的部分:何许请求的一方和发送的一方独立开来。支持设计可变的部分:何时、怎样满足一个请求时、怎样满足一个请求命令模式把发出命令的责任和执行命令的责任分割开,委派给不命
33、令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。同的对象。 uInterpreter解释器解释器模式:模式:给定一个语言后,该模式可以定义出其给定一个语言后,该模式可以定义出其文法的一种表示,并同时提供一个解释器。支持设计可变的部分:文法的一种表示,并同时提供一个解释器。支持设计可变的部分:一个语言的文法及解释一个语言的文法及解释解释器模式将描述怎样在有了一个简单的文法后,使用模式设计解释器模式将描述怎样在有了一个简单的文法后,使用模式设计解释这些语句。解释这些语句。 武汉大学武汉大学UNIT TWENTY-ONE286 常用设计模式简介常用设计模式简介行为设计模式行为设计模式
34、uInterator迭代子迭代子模式:模式:分离一个集合对象的遍历行为,抽象出一分离一个集合对象的遍历行为,抽象出一个迭代器类来负责。支持设计可变的部分:如何遍历、访问一个个迭代器类来负责。支持设计可变的部分:如何遍历、访问一个聚合的各元素聚合的各元素uMediator调停者调停者模式:模式:用一个中介对象来封装一系列的对象交互,用一个中介对象来封装一系列的对象交互,使得这些对象不必相互明显作用。支持设计可变的部分:对象间使得这些对象不必相互明显作用。支持设计可变的部分:对象间怎样交互、和谁交互?怎样交互、和谁交互?调停者模式将对象的行为和协作抽象化,把对象在小尺度的行为调停者模式将对象的行为
35、和协作抽象化,把对象在小尺度的行为上与其他对象的相互作用分开处理。上与其他对象的相互作用分开处理。武汉大学武汉大学UNIT TWENTY-ONE296 常用设计模式简介常用设计模式简介行为设计模式行为设计模式uMemento备忘录备忘录模式:模式:在不破坏封装的前提下,捕获一个对象内在不破坏封装的前提下,捕获一个对象内部状态并外部化,存储起来。支持设计可变的部分:一个对象中部状态并外部化,存储起来。支持设计可变的部分:一个对象中哪些私有信息存放在该对象之外,以及在什么时候进行存储。哪些私有信息存放在该对象之外,以及在什么时候进行存储。uObersver观察者观察者模式:模式:定义了一种一对多的依赖关系,让多个观定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。支持设计可变的部分:多个察者对象同时监听某一个主题对象。支持设计可变的部分:多个对象依赖于另外一个对象,而这些对象又如何保持一致对象依赖于另外一个对象,而这些对象又如何保持一致武汉大学武汉大学UNIT TWENTY-ONE306 常用设计模式简介常用设计模式简介行为设计模式行为设计模式uState状态状态模式:模式:允许一个对象在其内部状态改变时,改变行为。允许一个对象
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 项目融资合同协议
- 购房补充协议合同归谁
- 烟店合同协议
- 绿化工程合同协议书
- 赠品领用合同协议
- 税点协议合同
- 施工合同初步协议
- 用户协议合同
- 共管协议共管合同
- 供应合同供油协议
- 路边小吃摊食品安全问题探究课件
- 人文关怀护理课件胃镜室
- 永椿化工新材料有限公司 年产 800 吨邻三氟甲基苯甲酰氯系列产品、1500 吨 2,6- 二氟苯甲酰胺系列产品、500 吨叔丁基二甲基氯硅烷、500 吨 3-氨基-2-溴-5-氟苯甲酸甲酯等产品项目环境影响报告书
- GB/T 21837-2023铁磁性钢丝绳电磁检测方法
- 绿植租摆服务投标方案(完整技术标)
- 国家开放大学《教育学》形考论坛1-4参考答案
- 感染性疾病科建设规范
- 抑郁病诊断证明书
- 焦虑、抑郁自评量表(SAS、SDS)
- 电动船舶充电安全要求
- 【社工师培训中级综合能力】第十章-社会工作研究(中级)
评论
0/150
提交评论