《设计模式复习1.0》由会员分享,可在线阅读,更多相关《设计模式复习1.0(8页珍藏版)》请在金锄头文库上搜索。
1、创建型模式:抽象工厂模式(Abstract Factory)、建造者模式(Builder)、工厂方法模式(Factory Method)原型模式(Prototype)、单例模式 (Singleton) 结构型模式:适配器模式(Adapter)、桥接模式(Bridge)、组合模式(Composite)、装饰模式(Decorator)、外观模式(Facade)、享元模式(Flyweight)行为型模式:职责链模式(Chain of Responsibility)、命令模式(Command)、观察者模式(Observer)、模板方法模式(Template Method)2. 接口:包含了一系列不被实
2、现的方法,而把这些方法的实现交给继承它的类。3. 组合 一个类是另一个类的组成成分。4. 多态:相关的对象按照各自类型来实现方法的能力。1. 抽象 是指不同事物之间概念上的联系方式。2. 重构 修改代码改进结构但不增加新功能,就是所谓重构。3. 内聚性 指的是例程中操作之间联系的紧密程度。4. 耦合性 指的是两个例程之间联系的紧密程度。2. 组合爆炸:随着问题中元素的增加,所出现的可能组合数剧烈增加,形象的说法就是组合爆炸。3. 封装:任何形式的隐藏。对象对它们的数据进行封装。抽象类对它们派生出的具体类进行封装4. 抽象类:为一组概念上相似的类定义方法和公共属性。抽象类绝对不能被实例化。5.
3、具体类:是能被直接实例化的类、用例、信号、其他类元或其他泛化元素,它也可以用来描述实现的操作。2. 结构型模式:将现存的对象结合在一起,处理接口,将实现与抽象类联系起来。3. 行为型模式:提供一种显得灵活(变化)的行为,包容变化的模式。例如,strategy 模式和 observer 模式。4. 创建型模式:创建或实例化对象2. 重载:一个类中的方法与另一个方法同名,但是参数表不同,这种方法称之为重载方法。3. 虚拟方法:当实例方法声明包含 virtual 修饰符时,称该方法为虚拟方法。2. 构造函数:对对象进行初始化或初始设置。3. 规格:生产的成品或所使用的原材料等规定的质量标准。3. 多
4、线程:在单个程序中同时运行多个线程完成不同的工作,称为多线程.第 5 章 设计模式试题1. 设计模式具有的优点(适应需求变化 )2. 设计模式一般用来解决什么样的问题(同一问题的不同表相)。3. 设计模式的两大主题是( 系统复用与系统扩展)。4. 以下哪些问题通过应用设计模式不能够解决 。 (确定软件的功能都正确实现)2. 设计模式基本原则包括:开闭原则, (从场景进行设计的原则) ,包容变化原则。3. 设计模式是一个( 抽象)的方案,它可以解决一类问题。4. 1. 在设计模式群体中,效果是指(原因和结果) 。2. 模板:模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。3. 模式:就
5、是解决某一类问题的方法论。把解决某类问题的方法总结归纳到理论高度,那就是模式。4. 内聚度:模块内部各成分彼此结合的紧密程度。1. 什么是设计模式?设计模式的目标是什么?设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。2. 设计模式的基本要素有哪些?名称,意图,问题,解决方案,参与者和协作者,效果,实现,GOF 参考。3. 设计模式中一般都遵循的原则有什么?开-闭原则,根据场景进行设计原则,优先组合原则,包容变化原则。4. 四人团针对“创建优秀面向对象设计”建议了哪些策略?针对接口编程,优先使用对
6、象组合而不是类继承,找到并封装变化点。第 6 章 facade(外观)模式1. 外观模式的作用是(为了系统中的一组功能调用提供一个一致的接口,这个接口使得这一子系统更加容易使用。 ) 。1. Facade 模式可以用来(隐藏)系统。该模式能够将系统作为自己的私有成员包含进来。2. Faade 模式要解决的问题:只需要使用一个复杂系统的一个(子集) 。或者,需要用一种特殊的方式与系统交互。3. Faade 模式不仅可以为方法调用创建更(简单)的接口,还可以减少客户必须处理的对象数量。1. Faade(外观)模式不仅可以为方法调用创建更简单的接口,还可以减少客户必须处理的对象数量。对Faade 模
7、式:模式定义了一个高层接口,使得这一子系统更加容易使用,为子系统中的一组接口提供一个一致的界面。Faade(外观)模式解决问题的方案是什么? 如何实现?Faade 向客户展现使用现有系统的一个新的接口。如何实现:定义一个(或一组)新的类来封装所需的接口。让新的类使用现有的系统。2. 请简要说明在一个复杂系统中应用 Faade(外观)模式的优点。当拥有一个复杂的系统时,Faade(外观)模式使我们只需要使用它的一部分功能。最终我们将得到一个更简单,更容易使用的或根据我们的需要定制的系统。3. Faade 模式的意图是什么?望那个简化现有系统的使用方法,需要定义自己的接口。1. 请论述在一个系统中
8、应用 Faade(外观)模式的必要性,并给出一种解决方案。Faade(外观)模式不仅可以为方法调用创建更简单的接口,还可以减少客户必须处理的对象数量。举个例子。假设有一个 Client 对象,这个对象必须处理 Database、Model、Element 类的对象。Client 必须首先通过 Database 对象打开数据库,以得到一个对Model 对象的引用,然后再向 Model 对象请求一个Element 对象,最后向 Element 对象查询所需的信息。而如果能创建一个 DatabaseFacade 类,让 Client 对象向它发出请求,那么上面的过程可能就会变得简单一些。第 7 章
9、Adapter(适配器) 模式4. 以下关于结构型模式说法不正确的是 。 ()A)结构型模式可以在不破坏类封装性的基础上,实现新的功能。B)结构型模式主要用于创建一组对象。C)结构型模式可以创建一组类的统一访问接口。D)结构型模式可以在不破坏类封装性的基础上,使得类可以同不曾估计到的系统进行交互。2. Adapter 模式有两种类型有 :对象 Adapter 模式、 (类 Adapter 模式 ) 。3. UML 是一种用来创建(程序模型)的图像语言。5. 适配器模式,分为类的适配器和对象的适配器两种实现。其中类的适配器采用的是(继承)关系,而对象适配器采用的是组合聚类关系。1. 对象适配器模
10、式是合成聚合复用原则的典型应用。对2. 对象 Adapter 模式: 使用 Adapter 模式与适当的抽象类相匹配,它通常依赖于一个对象(适配对象)包含另一个对象(被适配对象) 。3. 类 Adapter 模式: 当实现 Adapter 模式的方法是使用多重继承。在这种情况下,它被成为类Adapter 模式。1. 给出 Adapter 模式的定义及意图。意图是将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使原本由于接口不兼容而不能一起工作的那些类可以一起工作。2. Adapter 模式的最常见的用法是什么?该模式可以使你不用操心什么方面?Adapter 模式最通常的用途就是
11、保持多态。Adapter 模式让我们在进行设计时不必再担心现存类的接口问题。3. Adapter 模式问题的解决方案以及如何实现?解决方案是 Adapter 模式用我们需要的接口对无法修改的类进行包装。实现:将现存的类包含在另一个类之中。包容类与需要的接口相匹配,并调用被包容类的方法。4. 请简要说明在软件设计中设计模式的作用?软件设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的代码设计经验的总结。使用设计模式是为了适应需求变化、可重用代码、让代码更容易被他人理解、保证代码的可靠性。1. 根据你的理解,请分析 Faade 模式比Adapter 模式的相同点
12、和不同点,并说明它们在实际应用中的差异?在两个模式中,都拥有现存的类,但是在 Faade模式中,无须针对某个接口进行设计;而在 Adapter模式中则必须针对某个特定接口进行设计。在 Faade模式中,动机是简化接口,而在 Adapter 模式中,尽管也是越简单越好,目的是针对一个现有的接口进行设计,并不能简化任何东西,即使可能有另一个更简单的接口。总之,在实际应用中,Faade 模式简化接口,而 Adapter 模式将接口转换成另一个现有的接口。第 9 章 Bridge(桥接) 模式1. 关于继承表述错误的是:(继承本质上是“白盒复用” ,对父类的修改,不会影响到子类。 ) 。2. 在不破坏
13、类封装性的基础上,使得类可以同不曾估计到的系统进行交互。主要体现在(桥接模式(Bridge)) 。3. 行为类模式使用(继承机制 )在类间分派行为。4. 下面的类图表示的是哪个设计模式?(桥接模式(Bridge) ) 。5. Bridge(桥接)模式的意图是(将一组实现部分从另一组使用它们的对象中分离出来使它们可以独立地变化) 。7. 以下叙述不对的是( Bridge 模式优先使用继承而不是组合.)。9. 对 Alexander 的模式哲学,以下叙述正确的是(每个模式, 可以无数次使用模式提供的解决方案,而不必再次重复同样的工作方式.)。10. 根据 Coplien 关于共同点/变化点的说法
14、,下面哪个是正确的(共同点分析是寻找家族成员的相同元素. )。1. 在存在继承关系的情况下,方法向超类方向集中,而数据向(子类)方向集中。2. 当存在一个抽象有不同实现时 Bridge 模式最为有用,它可以使抽象和(实现)相互独立地进行变化。3. (类型的封装)是通过多态使用具有派生类的抽象类实现的。5. C+中,必须用一个定义(公共接口)的抽象类来实现 Bridge 模式的实现部分。6. 为了提 高内聚和( 松耦合),我们经常会抽象出一些类的公共接口以形成抽象基类或者接口。7. 封装性好的代码更容易测试,因为它与其他代码没有(耦合) 。8. Bridge(桥接)模式是将抽象部分与它的实现部分
15、分离,其中(实现部分)是指用来实现抽象类的派生类的对象。1. Bridge 模式要解决的基本问题是什么?Bridge(桥接)模式适用于一个抽象部分拥有不同的实现部分的情况,它让抽象部分和实现部分可以各自独立的变化。2. 给出 Bridge 模式的定义。采用 Bridge 模式的效果是什么?将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将他们之间的强关联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以独立的变化。效果是:“实现部分与使用它的对象的分离”增加了灵活性。客户对象不需要了解实现问题。3. 什么是“一条规则,一个地方”?抽象类
16、经常让自己的方法实际使用实现部分对象。抽象部分的派生类将调用这些方法。这样如果需要修改,修改也会容易些,并且在实现整个模式之前让你拥有一个好的起点。4. 在学习 Bridge(桥接)模式的过程中,应该遵循下列处理变化的基本策略是什么?找出变化并封装变化点;优先使用对象组合,而不是类继承。5. Bridge(桥接)模式的解决方案是什么,以及如何实现?解决的问题是:为所有的实现部分定义一个接口,让抽象类的所有派生类使用这个接口。实现:将实现部分封装在一个抽象类中。在被实现的抽象部分基类中包含一个实现部分基类的句柄。1. 根据你对 Bridge 模式的理解,概要描述使用该模式的应用要求,并给出相应的设计类图。当存在一个抽象有不同实现时 Bridge 模式最为有用,它可以使抽象和实现相互独立地进行变化。2. 举例说明使用 Bridge 模式的场合,给出在该场合下使用 Bridge 模式的解决方案,并说明该解决方案的优点。打印驱动程序是 Bridge 模式最典型的例子,也是最适合应用 Bridge 模式的场合。Bridge 模式的真正