设计模式复习1.0.docx_第1页
设计模式复习1.0.docx_第2页
设计模式复习1.0.docx_第3页
设计模式复习1.0.docx_第4页
设计模式复习1.0.docx_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

创建型模式:抽象工厂模式(Abstract Factory)、建造者模式(Builder)、工厂方法模式(Factory Method)原型模式(Prototype)、单例模式(Singleton) 结构型模式:适配器模式(Adapter)、桥接模式(Bridge)、组合模式(Composite)、装饰模式(Decorator)、外观模式(Facade)、享元模式(Flyweight)行为型模式:职责链模式(Chain of Responsibility)、命令模式(Command)、观察者模式(Observer)、模板方法模式(Template Method)2. 接口:包含了一系列不被实现的方法,而把这些方法的实现交给继承它的类。3. 组合 一个类是另一个类的组成成分。4. 多态:相关的对象按照各自类型来实现方法的能力。1. 抽象 是指不同事物之间概念上的联系方式。2. 重构 修改代码改进结构但不增加新功能,就是所谓重构。3. 内聚性 指的是例程中操作之间联系的紧密程度。4. 耦合性 指的是两个例程之间联系的紧密程度。2. 组合爆炸:随着问题中元素的增加,所出现的可能组合数剧烈增加,形象的说法就是组合爆炸。3. 封装:任何形式的隐藏。对象对它们的数据进行封装。抽象类对它们派生出的具体类进行封装4. 抽象类:为一组概念上相似的类定义方法和公共属性。抽象类绝对不能被实例化。5. 具体类:是能被直接实例化的类、用例、信号、其他类元或其他泛化元素,它也可以用来描述实现的操作。2. 结构型模式:将现存的对象结合在一起,处理接口,将实现与抽象类联系起来。3. 行为型模式:提供一种显得灵活(变化)的行为,包容变化的模式。例如,strategy 模式和observer模式。4. 创建型模式:创建或实例化对象2. 重载:一个类中的方法与另一个方法同名,但是参数表不同,这种方法称之为重载方法。3. 虚拟方法:当实例方法声明包含virtual修饰符时,称该方法为虚拟方法。2. 构造函数:对对象进行初始化或初始设置。3. 规格:生产的成品或所使用的原材料等规定的质量标准。3. 多线程:在单个程序中同时运行多个线程完成不同的工作,称为多线程.第5章 设计模式试题1. 设计模式具有的优点(适应需求变化)2. 设计模式一般用来解决什么样的问题(同一问题的不同表相)。3. 设计模式的两大主题是(系统复用与系统扩展)。4. 以下哪些问题通过应用设计模式不能够解决 。(确定软件的功能都正确实现)2. 设计模式基本原则包括:开闭原则,(从场景进行设计的原则),包容变化原则。3. 设计模式是一个(抽象)的方案,它可以解决一类问题。4. 1. 在设计模式群体中,效果是指(原因和结果)。2. 模板:模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。3. 模式:就是解决某一类问题的方法论。把解决某类问题的方法总结归纳到理论高度,那就是模式。4. 内聚度:模块内部各成分彼此结合的紧密程度。1. 什么是设计模式?设计模式的目标是什么?设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。2. 设计模式的基本要素有哪些?名称,意图,问题,解决方案,参与者和协作者,效果,实现,GOF参考。3. 设计模式中一般都遵循的原则有什么?开-闭原则,根据场景进行设计原则,优先组合原则,包容变化原则。4. 四人团针对“创建优秀面向对象设计”建议了哪些策略?针对接口编程,优先使用对象组合而不是类继承,找到并封装变化点。第6章 facade(外观)模式1. 外观模式的作用是(为了系统中的一组功能调用提供一个一致的接口,这个接口使得这一子系统更加容易使用。)。1. Facade模式可以用来(隐藏)系统。该模式能够将系统作为自己的私有成员包含进来。2. Faade模式要解决的问题:只需要使用一个复杂系统的一个(子集)。或者,需要用一种特殊的方式与系统交互。3. Faade模式不仅可以为方法调用创建更(简单)的接口,还可以减少客户必须处理的对象数量。1. Faade(外观)模式不仅可以为方法调用创建更简单的接口,还可以减少客户必须处理的对象数量。对Faade模式:模式定义了一个高层接口,使得这一子系统更加容易使用,为子系统中的一组接口提供一个一致的界面。Faade(外观)模式解决问题的方案是什么? 如何实现?Faade向客户展现使用现有系统的一个新的接口。如何实现:定义一个(或一组)新的类来封装所需的接口。让新的类使用现有的系统。2. 请简要说明在一个复杂系统中应用Faade(外观)模式的优点。当拥有一个复杂的系统时,Faade(外观)模式使我们只需要使用它的一部分功能。最终我们将得到一个更简单,更容易使用的或根据我们的需要定制的系统。3. Faade模式的意图是什么?望那个简化现有系统的使用方法,需要定义自己的接口。1. 请论述在一个系统中应用Faade(外观)模式的必要性,并给出一种解决方案。Faade(外观)模式不仅可以为方法调用创建更简单的接口,还可以减少客户必须处理的对象数量。举个例子。假设有一个Client对象,这个对象必须处理Database、Model、Element类的对象。Client必须首先通过Database对象打开数据库,以得到一个对Model对象的引用,然后再向Model对象请求一个Element对象,最后向Element对象查询所需的信息。而如果能创建一个DatabaseFacade类,让Client对象向它发出请求,那么上面的过程可能就会变得简单一些。第7章 Adapter(适配器)模式4. 以下关于结构型模式说法不正确的是 。()A)结构型模式可以在不破坏类封装性的基础上,实现新的功能。B)结构型模式主要用于创建一组对象。C)结构型模式可以创建一组类的统一访问接口。D)结构型模式可以在不破坏类封装性的基础上,使得类可以同不曾估计到的系统进行交互。2. Adapter模式有两种类型有 :对象Adapter模式、(类Adapter模式)。3. UML是一种用来创建(程序模型)的图像语言。5. 适配器模式,分为类的适配器和对象的适配器两种实现。其中类的适配器采用的是(继承)关系,而对象适配器采用的是组合聚类关系。1. 对象适配器模式是合成聚合复用原则的典型应用。对2. 对象Adapter模式:使用Adapter模式与适当的抽象类相匹配,它通常依赖于一个对象(适配对象)包含另一个对象(被适配对象)。3. 类Adapter模式:当实现Adapter模式的方法是使用多重继承。在这种情况下,它被成为类Adapter模式。1. 给出Adapter模式的定义及意图。意图是将一个类的接口转换成客户希望的另外一个接口。Adapter模式使原本由于接口不兼容而不能一起工作的那些类可以一起工作。2. Adapter模式的最常见的用法是什么?该模式可以使你不用操心什么方面?Adapter模式最通常的用途就是保持多态。Adapter模式让我们在进行设计时不必再担心现存类的接口问题。3. Adapter模式问题的解决方案以及如何实现?解决方案是Adapter模式用我们需要的接口对无法修改的类进行包装。实现:将现存的类包含在另一个类之中。包容类与需要的接口相匹配,并调用被包容类的方法。4. 请简要说明在软件设计中设计模式的作用?软件设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的代码设计经验的总结。使用设计模式是为了适应需求变化、可重用代码、让代码更容易被他人理解、保证代码的可靠性。1. 根据你的理解,请分析Faade模式比Adapter模式的相同点和不同点,并说明它们在实际应用中的差异?在两个模式中,都拥有现存的类,但是在Faade模式中,无须针对某个接口进行设计;而在Adapter模式中则必须针对某个特定接口进行设计。在Faade模式中,动机是简化接口,而在Adapter模式中,尽管也是越简单越好,目的是针对一个现有的接口进行设计,并不能简化任何东西,即使可能有另一个更简单的接口。总之,在实际应用中,Faade模式简化接口,而Adapter模式将接口转换成另一个现有的接口。第9章 Bridge(桥接)模式1. 关于继承表述错误的是:(继承本质上是“白盒复用”,对父类的修改,不会影响到子类。 )。2. 在不破坏类封装性的基础上,使得类可以同不曾估计到的系统进行交互。主要体现在(桥接模式(Bridge))。3. 行为类模式使用(继承机制 )在类间分派行为。4. 下面的类图表示的是哪个设计模式?(桥接模式(Bridge) )。5. Bridge(桥接)模式的意图是(将一组实现部分从另一组使用它们的对象中分离出来使它们可以独立地变化)。7. 以下叙述不对的是(Bridge模式优先使用继承而不是组合.)。9. 对Alexander的模式哲学,以下叙述正确的是(每个模式,可以无数次使用模式提供的解决方案,而不必再次重复同样的工作方式.)。10. 根据Coplien关于共同点/变化点的说法,下面哪个是正确的(共同点分析是寻找家族成员的相同元素. )。1. 在存在继承关系的情况下,方法向超类方向集中,而数据向(子类)方向集中。2. 当存在一个抽象有不同实现时Bridge模式最为有用,它可以使抽象和(实现)相互独立地进行变化。3. (类型的封装)是通过多态使用具有派生类的抽象类实现的。5. C+中,必须用一个定义(公共接口)的抽象类来实现Bridge模式的实现部分。6. 为了提高内聚和(松耦合),我们经常会抽象出一些类的公共接口以形成抽象基类或者接口。7. 封装性好的代码更容易测试,因为它与其他代码没有(耦合)。8. Bridge(桥接)模式是将抽象部分与它的实现部分分离,其中(实现部分)是指用来实现抽象类的派生类的对象。1. Bridge模式要解决的基本问题是什么?Bridge(桥接)模式适用于一个抽象部分拥有不同的实现部分的情况,它让抽象部分和实现部分可以各自独立的变化。2. 给出Bridge模式的定义。采用Bridge模式的效果是什么?将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将他们之间的强关联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以独立的变化。效果是:“实现部分与使用它的对象的分离”增加了灵活性。客户对象不需要了解实现问题。3. 什么是“一条规则,一个地方”?抽象类经常让自己的方法实际使用实现部分对象。抽象部分的派生类将调用这些方法。这样如果需要修改,修改也会容易些,并且在实现整个模式之前让你拥有一个好的起点。4. 在学习Bridge(桥接)模式的过程中,应该遵循下列处理变化的基本策略是什么?找出变化并封装变化点;优先使用对象组合,而不是类继承。5. Bridge(桥接)模式的解决方案是什么,以及如何实现?解决的问题是:为所有的实现部分定义一个接口,让抽象类的所有派生类使用这个接口。实现:将实现部分封装在一个抽象类中。在被实现的抽象部分基类中包含一个实现部分基类的句柄。1. 根据你对Bridge 模式的理解,概要描述使用该模式的应用要求,并给出相应的设计类图。当存在一个抽象有不同实现时Bridge模式最为有用,它可以使抽象和实现相互独立地进行变化。2. 举例说明使用Bridge 模式的场合,给出在该场合下使用Bridge 模式的解决方案,并说明该解决方案的优点。打印驱动程序是Bridge模式最典型的例子,也是最适合应用Bridge模式的场合。Bridge模式的真正威力在于它能够帮助我们看到什么时候应该从问题域中提取实现。也就是说,有时候有一个实体X使用系统S,一个实体Y使用系统T。我们可能认为X总是与S相伴,而Y总是与T相伴,因此就将它们联系(耦合)起来。Bridge模式提醒我们,可以抽象出S和T,这样更好,也就是说,Bridge模式最有用的地方,是在解耦抽象与实现之前考虑Bridge模式是否适用。第10章 Abstract Factory(抽象工厂)模式1. 静态工厂的核心角色是(抽象产品)。4. Abstract Factory(抽象工厂)模式的意图是(提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类)。5. 在根据不同的机器选择设备驱动程序的案例中,以下叙述不准确的是()。A. 可以使用switch语句选择驱动程序.B. 可以使用继承来实现选择驱动程序,但它可能会产生类组合爆炸问题.C. 可以选择抽象工厂模式实现,且能避免组合爆炸问题.D. 使用继承的解决方案要比switch语句有更多的优势.6. 以下有关Abstract Factory(抽象工厂)模式正确的是(Abstract Factory类和具体工厂方法可以分离,每个具体工厂负责一个抽象工厂方法接口的实现. )。7. 根据设计模式,有关抽象工厂模式的定义,准确的说法是(要创造的东西本身是抽象定义的,工厂方法可以灵活实现)。8. 关于抽象工厂模式,以下叙述不正确的是(客户对象不需要知道向谁请求所需的对象和如何使用这些对象。)9. 关于抽象工厂模式( Abstract Factory ), 以下叙述正确的是(抽象工厂定义接口,具体工厂实现某一接口)。2. 工厂模式分为简单工厂,工厂方法,( 抽象工厂)三种类型。4. Abstract Factory模式强调的是为创建多个相互依赖的对象提供一个(同一的接口)。5. 我们可以使用(抽象工厂)模式,不同应用程序都使用同一子系统。7. 当一个系统要(独立)于它的产品的创建、组合和表示时适合用Abstract Factory模式。8. Abstract Factory模式为如何创建对象组的每个成员定义(接口)。9. 抽象工厂模式是定义一个(抽象类),然后为每个组实现一个具体类。10. Abstract Factory模式将如何执行对象(实例化)规则从使用这些对象的客户对象提取出来。1. Abstract Factory(抽象工厂)模式就是用来解决这类问题的:要创建一组相关或者相互依赖的对象。1. Abstract Factory的三个关键策略是什么?发现并封装变化点;优先使用对象组合,而不是类继承;针对接口设计,而不是针对实现设计。2. 采用Abstract Factory模式的效果是什么?效果:这个模式将“使用哪些对象”的规则与“”如何使用这些对象“的逻辑相隔离。3. 为什么这个模式被称为“Abstract Factory”?因为它要创建的东西本身是由抽象定义的。工厂各种变化的实现如何选择,模式并没有具体规定。4. 如何获得正确的工厂对象?决定需要哪个工厂对象实际上是判断需要哪个系列的对象。如何知道自己需要哪个系列呢?在类似的案例中,最可能的是由一个配置文件来告诉我们。然后就可以写几行代码,根据这些配置信息来将合适的工厂对象实例化。5. 在Abstract Factory(抽象工厂)模式中对象的角色是什么?客户对象只知道“向谁请求需要的对象”和“如何使用这些对象”。Abstract Factory类通过“为每种不同类型的对象定义一个方法来指定”哪些对象可以被实例化。典型情况下,一个Abstract Factor对象将针对每种必须实例化的对象拥有一个方法。具体工厂指定哪些对象将被实例化。1. 请结合抽象工厂模式,说明在实际应用中如何生成正确的对象。决定需要哪个工厂对象实际上与确定使用哪一组对象是相同的。例如,在驱动程序问题中,有一组低分辨率动程序和一组高分辨率驱动程序,怎样才能知道自己需要哪一组呢? 在类似这样的例子中,很可能通过一个配置文件获知这一信息。然后可以编写几行代码,根据配置信息将合适的工厂对象实例化。还可以使用Abstract Factory模式,不同应用程序都使用同一子系统。在这种情况下,工厂对象将传给子系统,告诉子系统将要使用哪些对象,此时,通常主系统知道子系统需要那一组对象,在调用子系统之前,将实例化正确的工厂对象。第12章 用模式解决CAD/CAM问题2. 当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用(创建型)模式。3. 实现部分各不相同,但都可以通过一个通用接口被访问是(Bridge )模式中的包容变化。4. 以下哪一条是Alexander的场景原则:(当你有一个涉及创建对象的设计模式时,对象应为模式提供场景)。5. 最高级别的模式约束其他的模式的不正确的叙述是(最高级别的模式是最重要的,其他的模式是次要的)。1. 设计模式的思想根源是(开闭)基本原则的宏观运用,本质上是没有任何模式的,发现模式的人永远是大师,而死守模式的人,最多只能是一个工匠。2. 模式不仅仅是包容变化,它们还是变化之间的(关联)。3. 系统中为其他模式确定场景的一个或两个模式,这个模式将对其他模式能做的事进行(约束)。4. 通常情况下,当一个模式使用另一个模式时,看起来被使用模式是在使用模式的(场景)之中的。5. 系统中的一个模式经常通过为系统中的其他模式提供(场景)与其他模式相关联。1. 场景:一些事物存在或发生的相互关联的状态。2. CVA:共同点/变化点分析3. 场景原则:当有一个涉及创建对象的设计模式时,这些对象为这个模式提供场景。1. 考虑场景时使用的一条原则是什么?考虑在系统中需要什么,然后再关心如何实现它。这也符合Alexander的场景原则:当有一个涉及创建对象的设计模式时,这些对象为这个模式提供场景。2. 用模式的方法思考的步骤是什么?发现在问题领域中拥有的模式,这些是需要分析的模式;对于这些需要分析的模式,做下列工作:a.挑出为其他模式提供最多场景的模式。b. 在我的概念性最高的设计中使用这个模式。c.识别任何可能已经出现的附加模式。将它们添加到“需要分析的模式中”。d.对于需要分析而还未分析的模式,重复上述过程; 按照需要将细节添加到设计中。扩展方法和类定义。3. 场景和被使用模式之间有什么关联?通常情况下,当一个模式使用另一个模式时,看起来被使用模式是在使用模式的场景之中的。这条规则也可能有例外,但是看起在大多数时候它都是有效的。4. 什么是“最高模式”?指系统中为其他模式建立背景的一两个模式。这个模式将约束其他模式的行为。5. 为一个庞大的工程的CAD/CAM系统提供支持的基本需求是什么?创建一个计算机程序,它能读取一个CAD/CAM数据集并从中提取部件,一个现有的专家系统需要这些部件才能进行智能设计。这个系统应该向CAD/CAM系统屏蔽专家系统。复杂的是CAD/CAM系统正处于变化之中。可能有CAD/CAM系统的多个潜在版本存在,而专家系统需要拥有它们的接口。第13章 设计模式的原则和策略1. Open-Close原则的含义是一个软件实体(应当对扩展开放.,对修改关闭)。2. 典型情况下,(Facade)模式不包容变化。2. 最基本的UML图是(类图)。它不仅描述了类,而且说明了类之间的关系。3. 模块,方法和类应该对扩展是开放的,而对更改是(封闭)的。4. Alexander告诉我们要从(场景)进行设计,在设计我们的片段出现的细节之前先创建整体视图 。5. Bridge模式不仅仅对抽象部分和实现部分的变化进行定义和包容,而且还定义了两个变化之间的(关联)。1. 什么是开-闭原则?模块,方法和类应该对扩展是开放的,而对更改是封闭的。换句话说,我们必须将我们的软件设计成这样:我们可以在不修改代码的前提下对我们的软件进行扩展。2. 哪些因素决定了用哪种方案来实现Abstract Factory模式?未来变化的可能性;“不修改当前系统”的重要性;谁来控制将被创建的对象系列(是我们还是其他的开发组);使用的编程语言;数据库或配置文件的可用性。3. 按照模式进行设计的策略是什么?1.开放-封闭的原则 2.从场景进行设计 3. 在类中包容变化。4. 请举例说明如何根据模式为其他的模式创造场景来选择模式。比如,Bridge-Facade关联,使用Facade模式来简化V1系统的接口,Bridge模式的实现部分之一使用Facade模式所创建的新接口。因此,Bridge模式为Facade模式创造了场景。5. 为什么说Bridge是包容变化原则的一个精彩的范例?Bridge模式中的实现部分各不相同,但都可以通过一个通用接口被访问。系统可以接纳新的实现部分,只要它也使用这个通用接口来实现。1. 在本书的应用案例中,为什么认为Bridge模式高于Adapter模式? 请举例说明。Bridge模式的应用情景是在概念的抽象有变化及其实现方式有多个。而Adapter模式的应用情景是原有对象的接口和需要的接口有差别。而大多数情景下Bridge模式是作为Adapter模式的背景。也就是Bridge是Adapter的“最高模式”,在用Bridge模式封装实现时,大多数的实现并不可以派生自相同的基类,这时Adapter模式就可以派上用场了。第16章 Singleton(单件)和Double-Checked Locking(双重检查锁定)模式1. Singleton模式适用于(当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时 )。5. 单例模式(Singleton)(装饰)模式的意图是:(你希望只拥有一个对象,但不用全局对象来控制对象的实例化)。1. (单例)模式确保某一个类仅有一个实例,并自行实例化向整个系统提供这个实例。2. (单例)模式只应在有真正的“单一实例”的需求时才可使用。4. Singleton(单件)模式和Double-Checked Locking模式都用以确保一个特定的类只有一个对象被(实例化)。1. Singleton(单件)模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。2. Double-Checked Locking 模式:是singleton的多线程版本。1. Singleton(单件)模式怎样工作?Singleton(单件)模式的工作方式是:拥有一个特定的方法,这个方法被用于实例化需要的对象。当这个方法被调用时,它检查这个对象是否已经被实例化。如果对象已经被实例化,这个方法仅仅返回这个对象的一个引用。如果对象尚未实例化,这个方法将对象实例化并返回这个新的实例的引用。为了确保这是创建这个类型的对象的惟一途径,在这个类中将构造函数定义为protected或private。2. Singleton(单件)模式和Double-Checked Locking模式之间有什么区别?Singleton(单件)模式用于单线程应用程序,而Double-Checked Locking模式用于多线程应用程序。3. 描述Singleton(单件)模式意图以及效果?Singleton(单件)模式的意图是你希望只拥有一个对象,但不用全局对象来控制对象的实例化。效果是客户对象不需要关心是否已经有Singleton的实例存在。这可以在Singleton内部得到控制。4. Singleton(单件)模式的用途是什么?它让我们可以仅仅对对象进行一次实例化,而不要求客户对象关心这个对象是否存在。1. 在一个多线程应用程序中,如果使用Singleton模式,试分析可能会出现哪些问题。出现A进程和B进程同时访问某个对象的时候,发现它没有实例化过,结果A、B进程分别将该类实例化一次,出现冗余对象的情况。这个情况并不多见,但是C中出现了就是内存泄露的重大问题。第17章 Observer(观察者)模式1. 在观察者模式中,表述错误的是(观察者可以改变被观察者的状态,再由被观察者通知所有观察者依据被观察者的状态进行。 )。5. Observer模式不适用于(一个对象结构包含很多类对象,它们有不同的接口,而想对这些对象实施一些依赖于其具体类的操作。 )。9. 对观察者模式,以下叙述不正确的是(必须找出所有希望获得通知的对象)。10. 对于观察者模式,以下叙述正确的是(如果对象之间的以来关系是固定的,采用观察者模式会带来负面影响)。2. 观察者模式定义了一种(一对多)的依赖关系,让多个观察者对象同时监听某一个主题对象。4. 当依赖关系固定(或几乎固定)时,加入一个Observer模式可能只会增加(复杂性)。5. 为了对所有Observer类型的对象实现Observer接口,有时候需要使用(Adapter)模式。6. 如果系统在不同的情况下运行,或由不同的用户运行,观察者列表会不同,这时适宜用(Observer)模式。7. 一个观察者可能只需要处理事件的某些情况,在这种情况下,观察者必须将额外的(通知)筛选掉。8. 对观察者模式,观察者通常将观察某个事件的责任交给(中心对象或Subject)。9. Subject类将实现一个(notify)方法来遍历其Observer对象列表,并调用每个Observer对象的update方法。10. 当Subject对象有了已注册的Observer对象,事件发生时,Subject对象通知Observer对象将非常简单。为此,每个Observer对象都要实现一个(update)方法。1. GOF设计模式按照模式的目的可分为哪三类?其目的分别是什么?结构型:将现存的对象结合在一起。行为型:提供一种显得灵活(变化)行为。创建型:穿件或实例化对象。2. Observer模式的定义,它要解决什么样的问题?Observer(观察者)模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。解决的问题是当某个事件发生时,你需要向一系列对象发出通知,而这个对象的列表是不断变化的。3. Observer(观察者)模式的效果。效果是如果某些Observer只对全部事件的一个子集感兴趣,那么Subject可能会告诉Observer它们不需要知道的事件。如果在Subject通知Observer之后,Observer又转过来请求附加信息,就可能需要额外的通信。4. Observer(观察者)模式如何实现解决方案的?让“希望知道某个事件何时发生”的对象(Observer)将自己注册到另一个“监视事件发生或自己触发事件”的对象(Subject)上。 当事件发生时,Subject告诉Observer“你关心的事情 已经发生了”。 为了能让所有的观察者型对象实现Observer接口,有时候需要使用Adapter模式。1. 给出Observer的定义以及它的意图,举一个例子说明该模式的适用场景,最后画出它的类图。定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。解决的问题是当某个事件发生时,你需要向一系列对象发出通知,而这个对象的列表是不断变化的。例如,在Subject对象注册了它的一个Observer对象,当事件发生时,Subject对象向Observer对象发出通知就非常简单了。为了实现这一功能,每个Observer类都实现一个叫做updata的方法。Subject类这样实现notify方法:遍历自己的Observer对象列表,调用其中每个Observer对象的updata方法。Updata方法应该包含处理事件的代码。2. 根据你的理解,请你谈谈结构型和行为型模式的区别,并结合实际的应用举例说明。结构型模式的目的是将现存的对象结合在一起,用途是处理接口,将实现与抽象类联系起来。而行为型模式的目的是提供一种显得灵活的行为,用途是包容变化的。例子:结构型模式中的Bridge模式或Decorator模式与行为型模式中的Strategy模式的比较。第18章 Template Method(模板方法)模式2. 模板方法的作用是(在方法中定义算法的框架,而将算法中的一些操作步骤延迟到子类中实现)。4. 有关模板方法模式,以下叙述不正确的是(将定义和操作相互分离)。5. 在采用模板方法模式对系统连接不同数据库(例如Oracle 和SQL Server)的连接时,以下叙述不正确的是(可以采用通用的实现方法建立对不同数据库的连接)。1. Template Method模式准备一个抽象类,将部分逻辑以(具体方法)以及具体构造子类的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。2. Template Method(模版)模式是用以帮助从不同的步骤中抽象出一个(通过的)过程模式。3. Template Method(模版)模式让我们可以在抽象类中捕捉共同点而在(派生类)中封装不同点。4. 当遇到一个心得数据库时,Template Method(模版)模式提供了一个(样板)让我们填充。我们创建一个新的派生类,并根据新的数据库的要求实现特定的步骤。5. Template Method(模版)模式使得子类可以不改变一个算法的结构即可(重定义)该算法的某些特定步骤。1. Template Method(模版)模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。1. Template Method模式以怎样的一种特殊的方式进行方法调用?Template Method(模版)模式可以这样做,因为对方法的调用是通过一个引用来进行的,而这个引用指向的对象属于某一个派生类。2. Template Method(模版)模式如何定义,其效果是什么?定义一个操作中的骨架,而将一些步骤延迟到子类中。Template Method模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。效果:模版为代码复用提供了一个优秀的平台。它们还有助于确保需要的步骤得到实现。它们为每个具体类将重载后的步骤捆绑在一起,因此只有在这些重载方法总是并且只能一起发生时,才应该使用Template Method(模版)模式。3. Template Method(模版)模式需要解决的问题是什么?解决方案是什么?需要遵循一个过程或一系列步骤,它们在某个具体层次上保持一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论