设计模式题库
设计模式期末考试题及答案

设计模式期末考试题及答案# 设计模式期末考试题及答案一、选择题(每题2分,共20分)1. 下列哪个不是设计模式的分类?A. 创建型模式B. 结构型模式C. 行为型模式D. 功能型模式答案:D2. 单例模式属于哪种类型的设计模式?A. 创建型模式B. 结构型模式C. 行为型模式D. 并发型模式答案:A3. 装饰者模式主要用于解决什么问题?A. 对类的功能进行扩展B. 将对象组合成树形结构C. 将一个类的对象包装成另一个新类的对象D. 将类接口的实现部分委托给其他对象答案:A4. 观察者模式中,当被观察对象状态发生变化时,它将通知所有的什么?A. 观察者B. 参与者C. 订阅者D. 监听者答案:A5. 策略模式的意图是?A. 定义一系列的算法,把它们一个个封装起来,并使它们可互换B. 确保一个对象的引用在多个线程间是安全的C. 允许用户对某个对象的内部状态进行访问,而不允许修改D. 允许多个客户端通过一个共同的接口与一个对象交互,而这个对象却能在运行时切换其行为答案:A...(此处省略其他选择题)二、简答题(每题10分,共30分)1. 解释什么是工厂方法模式,并给出一个实际应用的例子。
答案:工厂方法模式是一种创建型设计模式,它定义了一个创建对象的接口,但让子类决定实例化哪一个类。
工厂方法让类的实例化推迟到子类中进行。
例如,在图形界面编程中,一个工厂类可以负责创建不同类型的按钮,如按钮工厂方法可以返回一个“圆形按钮”或“方形按钮”的实例。
2. 描述适配器模式的工作原理,并解释它在软件开发中的应用。
答案:适配器模式是一种结构型模式,它允许不兼容的接口之间进行通信。
它通过一个适配器类将一个类的接口转换成客户端期望的另一个接口。
在软件开发中,适配器模式常用于实现第三方库或遗留系统的接口,使得它们能够与现有的系统兼容。
3. 解释观察者模式的工作原理,并举例说明其在实际开发中的应用。
答案:观察者模式是一种行为型模式,它定义了对象间的一种一对多的依赖关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。
2022年设计模式期末复习

2022年设计模式期末复习设计模式期末复习题1、以下哪个模式是利用一个对象,快速地生成一批对象:()2、要针对接口编程,不要针对实现编程是()原则的一种表述。
A.里氏代换B.依赖倒转C.接口隔离D.迪米特3、“不要和陌生人说话”是()原则的通俗表述A.开闭B.里氏代换C.合成复用D.迪米特4、关于继承表述错误的是:()A.继承是一种通过扩展一个已有对象的实现,从而获得新功能的复用方法。
B.泛化类(超类)可以显式地捕获那些公共的属性和方法。
特殊类(子类)则通过附加属性和方法来进行实现的扩展。
C.破坏了封装性,因为这会将父类的实现细节暴露给子类。
D.继承本质上是“白盒复用”,对父类的修改,不会影响到子类5、当想使用一个已经存在的类,但其接口不符合需求时,可以采用()设计模式将该类的接口转换成我们希望的接口A.依赖于抽象而不依赖于具体,也就是针对接口编程。
B.依赖倒转的接口并非语法意义上的接口,而是一个类对其他对象进行调用时,所知道的方法集合。
C.从选项B的角度论述,一个对象可以有多个接口。
D.实现了同一接口的对象,可以在运行期间,顺利地进行替换。
而且不必知道所示用的对象是那个实现类的实例。
E.此题没有正确答案。
7、Java的异常处理机制可理解为哪一种行为模式A.观察者(Oberver)模式B.迭代器(Iterator)模式C.职责链(ChainofReponibility)模式D.策略(Strategy)模式8、()不是桥接模式所适用的场景A.一个可以跨平台并支持多种格式的文件编辑器B.一个支持多数据源的报表生成工具,可以以不同图形方式显示报表信息C.一个可动态选择排序算法的数据操作工具D.一个可以支持多种编程语言的跨平台开发工具9、下图描述了一种设计模式,该模式不可以()A.动态决定由一组对象中某个对象处理该请求B.动态指定处理一个请求的对象集合,并高效率地处理一个请求C.使多个对象都有机会处理请求,避免请求的发送者和接收者间的耦合D.将对象连成一条链,并沿着该链传递请求1ClientHandler+handleRequet()-ucceor1ConcreateHandlerA+handlerRequet()ConcreateHandlerB+handle Requet()10、在()时无须使用命令模式A.实现撤消操作和恢复操作B.将请求的发送者和接收者解耦C.不改变聚合类的前提下定义作用于聚合中元素的新操作D.在不同的时刻指定请求,并将请求排队11.中介者模式中通过中介者来将同事类解耦,这是()的具体应用。
设计模式题库

1.1(D)以用户的观点表示系统的目标,它是所有视图的核心,该视图描述系统的需求。
A 结构视图B 行为视图C 实现视图D 用户视图E 环境视图F 物理视图G逻辑视图1.2类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同(ABC)的对象集合的总称。
A 属性B 操作C 关系D 约束E 继承F 多态G 封装2.1面向对象设计原则首先都是(B)的原则,遵循这些设计原则可以有效地提高系统的复用性,同时提高系统的可维护性。
A 重载B 复用C 面向对象D 封装E 继承F 多态G抽象2.2以下说法错误的有(BDH)A对于面向对象的软件系统设计来说,在支持可维护性的同时,需要提高系统的可复用性。
B迪米特法则要求一个软件实体应当尽可能多的与其他实体发生相互作用。
C单一职责原则要求在软件系统中,一个类只负责一个功能领域中的相应职责。
D开闭原则要求一个软件实体应当对扩展开放,对修改关闭,但是为了增强系统功能,可以随便的修改源代码。
E里氏代换原则可以通俗表述为在软件中如果能够使用基类对象,那么一定能够使用其子类对象。
F依赖倒转原则要求抽象不应该依赖于细节,细节应该依赖于抽象;要针对接口编程,不要针对实现编程。
G接口隔离原则要求客户端不应该依赖那些它不需要的接口,即将一些大的接口细化成一些小的接口供客户端使用。
H合成复用原则要求复用时尽量使用继承,而不使用对象组合。
3.1 结构型模式分为类模式和对象模式,以下可以是类模式的是(A)A 适配器模式B 桥接模式C 组合模式D 装饰模式E 外观模式F 享元模式G 代理模式3.2设计模式一般有如下几个基本要素:模式名称、问题、目的、解决方案、效果、实例代码和相关设计模式,其中的关键元素包括以下四个方面(ABDE)A 模式名称B 问题C 目的D 解决方案E 效果F 实例代码G 相关设计模式4.1 以下关于简单工厂模式叙述错误的是(A)A 它属于GoF23种设计模式B 它是最简单的设计模式之一C 它是学习其他创建型模式的基础D 它只需要记住一个简单的参数即可获得所需对象的实例E 它类中的方法通常为静态方法F 它返回的类都有一个公共的父类和公共的方法4.2 简单工厂模式包含三个角色是(ABC)A 工厂角色B 抽象产品口C 具体产品角色D 抽象接口角色E 生产者角色F 用户角色G 使用者角色5.1 Java中的(A)是指在程序运行时获取已知名称的类或已有对象的相关信息的一种机制,包括类的方法、属性、超类等信息,还包括实例的创建和实例类型的判断等A 反射B 继承C 多态D 组合E 聚合F 抽象G 抽象5.2 工厂方法模式与简单工厂模式相比的优点有(ABCD)A 工厂方法模式很好的符合开闭原则B 工厂方法类模式中工厂类职责变轻,业务逻辑相对简单C 具体产品与工厂类之间的耦合降低D工厂方法模式是简单工厂模式的进一步抽象和推广E Factory类内的方法常使用静态方法F 只提供一个工厂类G不需要考虑对象的具体创建细节6.1现有5个产品族,分布于3各不同的产品等级结构,只要指明一个产品所处的产品族以及它所在的等级结构,就可以唯一地确认这个产品。
设计模式题库

1.1(D)以用户的观点表示系统的目标,它是所有视图的核心,该视图描述系统的需求。
A 结构视图B 行为视图C 实现视图D 用户视图E 环境视图F 物理视图G逻辑视图1.2类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同(ABC)的对象集合的总称。
A 属性B 操作C 关系D 约束E 继承F 多态G 封装2.1面向对象设计原则首先都是(B)的原则,遵循这些设计原则可以有效地提高系统的复用性,同时提高系统的可维护性。
A 重载B 复用C 面向对象D 封装E 继承F 多态G抽象2.2以下说法错误的有(BDH)A对于面向对象的软件系统设计来说,在支持可维护性的同时,需要提高系统的可复用性。
B迪米特法则要求一个软件实体应当尽可能多的与其他实体发生相互作用。
C单一职责原则要求在软件系统中,一个类只负责一个功能领域中的相应职责。
D开闭原则要求一个软件实体应当对扩展开放,对修改关闭,但是为了增强系统功能,可以随便的修改源代码。
E里氏代换原则可以通俗表述为在软件中如果能够使用基类对象,那么一定能够使用其子类对象。
F依赖倒转原则要求抽象不应该依赖于细节,细节应该依赖于抽象;要针对接口编程,不要针对实现编程。
G接口隔离原则要求客户端不应该依赖那些它不需要的接口,即将一些大的接口细化成一些小的接口供客户端使用。
H合成复用原则要求复用时尽量使用继承,而不使用对象组合。
3.1 结构型模式分为类模式和对象模式,以下可以是类模式的是(A)A 适配器模式B 桥接模式C 组合模式D 装饰模式E 外观模式F 享元模式G 代理模式3.2设计模式一般有如下几个基本要素:模式名称、问题、目的、解决方案、效果、实例代码和相关设计模式,其中的关键元素包括以下四个方面(ABDE)A 模式名称B 问题C 目的D 解决方案E 效果F 实例代码G 相关设计模式4.1 以下关于简单工厂模式叙述错误的是(A)A 它属于GoF23种设计模式B 它是最简单的设计模式之一C 它是学习其他创建型模式的基础D 它只需要记住一个简单的参数即可获得所需对象的实例E 它类中的方法通常为静态方法F 它返回的类都有一个公共的父类和公共的方法4.2 简单工厂模式包含三个角色是(ABC)A 工厂角色B 抽象产品口C 具体产品角色D 抽象接口角色E 生产者角色F 用户角色G 使用者角色5.1 Java中的(A)是指在程序运行时获取已知名称的类或已有对象的相关信息的一种机制,包括类的方法、属性、超类等信息,还包括实例的创建和实例类型的判断等A 反射B 继承C 多态D 组合E 聚合F 抽象G 抽象5.2 工厂方法模式与简单工厂模式相比的优点有(ABCD)A 工厂方法模式很好的符合开闭原则B 工厂方法类模式中工厂类职责变轻,业务逻辑相对简单C 具体产品与工厂类之间的耦合降低D工厂方法模式是简单工厂模式的进一步抽象和推广E Factory类内的方法常使用静态方法F 只提供一个工厂类G不需要考虑对象的具体创建细节6.1现有5个产品族,分布于3各不同的产品等级结构,只要指明一个产品所处的产品族以及它所在的等级结构,就可以唯一地确认这个产品。
设计模式的题库【精选】

1.设计模式的原理? (C)A. 面对实现编程B. 面向对象编程C. 面向接口编程D. 面向组合编程2. 以下对"开-闭"原则的一些描述错误的是?(A)A. "开-闭"原则与"对可变性的封装原则"没有相似性.B. 找到一个系统的可变元素,将它封装起来,叫"开-闭"原则C. 对修改关闭: 是其原则之一D. 从抽象层导出一个或多个新的具体类可以改变系统的行为,是其原则之一3.以下不属于创建型模式是? (A)A.PROXY(代理)B.BUILDER(生成器)C. PROTOTYPE(原型)D.SINGLETON(单件)4.以下不属于结构型模式是? (D)A. COMPOSITE(组合)B. ADAPTER(适配器)C. FLYWEIGHT(享元)D. SINGLETON(单例)5.以下不属于行为型模式是? (D )A. COMMAND(命令)B. STRATEGY(策略)C. MEMENTO(备忘录)D. BRIDGE(桥接)/*23模式意图*/6.以下意图那个是用来描述ABSTRACT FACTORY(抽象工厂)?(A)A.提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
B.定义一个用于创建对象的接口,让子类决定实例化哪一个类。
C.将一个类的接口转换成客户希望的另外一个接口。
D.表示一个作用于某对象结构中的各元素的操作。
7.以下意图那个是用来描述BUILDER(生成器)?(B)A.定义一个用于创建对象的接口,让子类决定实例化哪一个类B.将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
C.保证一个类仅有一个实例,并提供一个访问它的全局访问点。
D.运用共享技术有效地支持大量细粒度的对象。
8.以下意图那个是用来描述FACTORY METHOD(工厂方法)?(C)A.提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
设计模式试卷

14.对于建造一辆汽车,使用建造者模式中ConcreteBulider(具体建造者)需要做的是()
A提供汽车的各个部件的构造和装配方法B建造汽车
C建造汽车部件并且组合成汽车D指挥汽车建造
E定义抽象接口
15单例模式的最主要的思想是()
设计模式期中考试试题
一:单项选择(共20道,每道2分)
1、设计模式一般用来解决什么样的问题()
A.同一问题的不同表相B不同问题的同一表相
C.不同问题的不同表相D.以上都不是
2、下列属于面向对象基本原则的是()
A.继承B.封装C.里氏代换D都不是
3、Open-Close原则的含义是一个软件实体()
A.应当对扩展开放,对修改关闭. B.应当对修改开放,对扩展关闭
C.应当对继承开放,对修改关闭D.以上都不对
4、当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用()模式。
A.创建型B.结构型C行为型D.以上都可以
5、要依赖于抽象,不要依赖于具体。即针对接口编程,不要针对实现编程,是()的表述
A.开-闭原则B.接口隔离原则
C.里氏代换原则D.依赖倒转原则
return obj;
}
catch(Exception e){
e.printStackTrace();
return null;
}
}
}
<?xml version="1.0"?>
-<config> <className>BirdAdapter</className> </config>
设计模式习题

设计模式习题1、设计模式一般用来解决什么样的问题( a)A.同一问题的不同表相B不同问题的同一表相C.不同问题的不同表相D.以上都不是2、下列属于面向对象基本原则的是( c )A.继承B.封装C.里氏代换 D都不是3、Open-Close原则的含义是一个软件实体( a )A.应当对扩展开放,对修改关闭.B.应当对修改开放,对扩展关闭C.应当对继承开放,对修改关闭D.以上都不对4、当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用( a )模式。
A.创建型B.结构型 C行为型 D.以上都可以5、要依赖于抽象,不要依赖于具体。
即针对接口编程,不要针对实现编程,是( d )的表述A.开-闭原则B.接口隔离原则C.里氏代换原则D.依赖倒转原则6、依据设计模式思想,程序开发中应优先使用的是( a )关系实现复用。
A,委派 B.继承C创建 D.以上都不对复用方式:继承和组合聚合(组合委派)7、设计模式的两大主题是( d )A.系统的维护与开发 B 对象组合与类的继承C.系统架构与系统开发D.系统复用与系统扩展8、单子模式中,两个基本要点( a b )和单子类自己提供单例A.构造函数私有B.唯一实例C.静态工厂方法D.以上都不对9、下列模式中,属于行为模式的是( b )A.工厂模式B观察者 C适配器以上都是10、“不要和陌生人说话” 是( d )原则的通俗表述A.接口隔离B.里氏代换C.依赖倒转D.迪米特:一个对象应对其他对象尽可能少的了解11、构造者的的退化模式是通过合并( c )角色完成退化的。
A.抽象产品B产品C创建者D使用者12、单子(单例,单态)模式类图结构如下:下列论述中,关于”0..1”表述的不正确的是( d )A.1表示,一个单例类中,最多可以有一个实例.B.”0..1”表示单例类中有不多于一个的实例C.0表示单例类中可以没有任何实例D.0表示单例类可以提供其他非自身的实例13、对象适配器模式是( a )原则的典型应用。
设计模式习题

设计模式习题1、设计模式一般用来解决什么样的问题( a)A.同一问题的不同表相B不同问题的同一表相C.不同问题的不同表相D.以上都不是2、下列属于面向对象基本原则的是( c )A.继承B.封装C.里氏代换 D都不是3、Open-Close原则的含义是一个软件实体( a )A.应当对扩展开放,对修改关闭.B.应当对修改开放,对扩展关闭C.应当对继承开放,对修改关闭D.以上都不对4、当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用( a )模式。
A.创建型B.结构型 C行为型 D.以上都可以5、要依赖于抽象,不要依赖于具体。
即针对接口编程,不要针对实现编程,是( d )的表述A.开-闭原则B.接口隔离原则C.里氏代换原则D.依赖倒转原则6、依据设计模式思想,程序开发中应优先使用的是( a )关系实现复用。
A,委派 B.继承C创建 D.以上都不对复用方式:继承和组合聚合(组合委派)7、设计模式的两大主题是( d )A.系统的维护与开发 B 对象组合与类的继承C.系统架构与系统开发D.系统复用与系统扩展8、单子模式中,两个基本要点( a b )和单子类自己提供单例A.构造函数私有B.唯一实例C.静态工厂方法D.以上都不对9、下列模式中,属于行为模式的是( b )A.工厂模式B观察者 C适配器以上都是10、“不要和陌生人说话” 是( d )原则的通俗表述A.接口隔离B.里氏代换C.依赖倒转D.迪米特:一个对象应对其他对象尽可能少的了解11、构造者的的退化模式是通过合并( c )角色完成退化的。
A.抽象产品B产品C创建者D使用者12、单子(单例,单态)模式类图结构如下:下列论述中,关于”0..1”表述的不正确的是( d )A.1表示,一个单例类中,最多可以有一个实例.B.”0..1”表示单例类中有不多于一个的实例C.0表示单例类中可以没有任何实例D.0表示单例类可以提供其他非自身的实例13、对象适配器模式是( a )原则的典型应用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.设计模式的原理? (C)C. 面向接口编程2. 以下对"开-闭"原则的一些描述错误的是?(A)A. "开-闭"原则与"对可变性的封装原则"没有相似性.3.以下属于创建型模式是? (A)(生成器)C. PROTOTYPE(原型)(单件)4.以下属于结构型模式是? (D)COMPOSITE(组合) B. ADAPTER(适配器)B.FLYWEIGHT(享元)5.以下属于行为型模式是? (D )MAND(命令)7.STRATEGY(策略)8.MEMENTO(备忘录)/*23模式意图*/6.以下意图那个是用来描述ABSTRACT FACTORY(抽象工厂)?(A)A.提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
7.以下意图那个是用来描述BUILDER(生成器)?(B)将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
8.以下意图那个是用来描述FACTORY METHOD(工厂方法)?(C)C.定义一个用于创建对象的接口,让子类决定实例化哪一个类。
该模式使一个类的实例化延迟到其子类。
9.以下意图那个是用来描述PROTOTYPE(原型)?(D)D.用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
10.以下意图那个是用来描述SINGLETON(单件)?(B)B.保证一个类仅有一个实例,并提供一个访问它的全局访问点。
11.以下意图那个是用来描述ADAPTER(适配器)?(A)A.将一个类的接口转换成客户希望的另外一个接口。
本模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
12.以下意图那个是用来描述BRIDGE(桥接)?(B)B.将抽象部分与它的实现部分分离,使它们都可以独立地变化。
13.以下意图那个是用来描述COMPOSITE(组合)?(C)C.将对象组合成树形结构以表示“部分-整体”的层次结构。
14.以下意图那个是用来描述DECORATOR(装饰)?(D)动态地给一个对象添加一些额外的职责。
15.以下意图那个是用来描述 FACADE(外观)?(A)A.为子系统中的一组接口提供一个一致的界面,本模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
16.以下意图那个是用来描述FLYWEIGHT(享元)?(B)B.运用共享技术有效地支持大量细粒度的对象。
17.以下意图那个是用来描述 PROXY(代理)?(C)C.为其他对象提供一种代理以控制对这个对象的访问。
18.以下意图那个是用来描述CHAIN OF RESPONSIBILITY(职责链)?(D)D.使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。
19.以下意图那个是用来描述 COMMAND(命令)?(A)A.将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作20.以下意图那个是用来描述 INTERPRETER(解释器)?(B)B.给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
21.以下意图那个是用来描述 ITERATOR(迭代器)?(C)。
C.提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。
22.以下意图那个是用来描述 MEDIATOR(中介者)?(D)D.用一个中介对象来封装一系列的对象交互。
23.以下意图那个是用来描述 MEMENTO(备忘录)?(A)A.在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。
这样以后就可将该对象恢复到原先保存的状态。
24.以下意图那个是用来描述 OBSERVER(观察者)?(B)B.定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。
25.以下意图那个是用来描述 STATE(状态)?(C)C.允许一个对象在其内部状态改变时改变它的行为。
对象看起来似乎修改了它的类。
26.以下意图那个是用来描述 STRATEGY(策略)?(D)D.定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换27.以下意图那个是用来描述 TEMPLATE METHOD(模板方法)?(A)A.定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。
28.以下意图那个是用来描述 VISITOR(访问者)?(B)B.表示一个作用于某对象结构中的各元素的操作。
/* 23模式的结构图*/29.下图结构图描述的是那种模式?(A)A.ABSTRACT FACTORY(抽象工厂)30.下图结构图描述的是那种模式?(B)(生成器)31.下图结构图描述的是那种模式?(C)A.FACTORY METHOD(工厂方法)32.下图结构图描述的是那种模式?(C)A.ADAPTER(适配器)33.下图结构图描述的是那种模式?(C)A.PROXY(代理)34.下图结构图描述的是那种模式?(D)A.STRATEGY(策略)33.下图结构图描述的是那种模式?(D)A.STRATEGY(策略)/*23模式的适用性*/34.关于模式适用性,在以下情况适合使用Abstract Factory模式?A.一个系统要独立于它的产品的创建、组合和表示时。
B.一个系统要由多个产品系列中的一个来配置时。
C.当你要强调一系列相关的产品对象的设计以便进行联合使用时。
35.关于模式适用性,在以下情况适合使用FACTORY METHOD模式?(C)A. 当一个类不知道它所必须创建的对象的类的时候。
B.当一个类希望由它的子类来指定它所创建的对象的时候。
D.当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。
36.关于模式适用性,在以下情况可以使用builder模式?(B)B.当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
37.关于模式适用性,在以下情况适合使用Factory Method模式?(A)B.当一个类希望由它的子类来指定它所创建的对象的时候。
C.当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。
D.当一个类不知道它所必须创建的对象的类的时候。
38.关于模式适用性,在以下情况适合使用PROTOTYPE模式?(B)A.当要实例化的类是在运行时刻指定时,例如,通过动态装载C.为了避免创建一个与产品类层次平行的工厂类层次时D.当一个类的实例只能有几个不同状态组合中的一种时39.关于模式适用性,在以下情况适合使用Singleton模式?(C)C.当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。
40.关于模式适用性,在以下情况适合使用Adapter(适配器)模式?(D)A.你想使用一个已经存在的类,而它的接口不符合你的需求。
B.你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。
B.你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。
对象适配器可以适配它的父类接口。
41.关于模式适用性,在以下情况适合使用Bridge(桥接)模式?(A)B.类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充。
这时B r i d g e模式使你可以对不同的抽象接口和实现部分进行组合,并分别对它们进行扩充。
C.对一个抽象的实现部分的修改应对客户不产生影响,即客户的代码不必重新编译。
D.客户程序与抽象类的实现部分之间存在着很大的依赖性。
42.关于模式适用性,在以下情况适合使用COMPOSITE(组合)模式?(B)A.你想使用一个已经存在的类,而它的接口不符合你的需求。
C. 当一个类的实例只能有几个不同状态组合中的一种时D. 一个对象的行为取决于它的状态, 并且它必须在运行时刻根据状态改变它的行为。
43.关于模式适用性,在以下情况适合使用DECORATOR(装饰)模式?(C)A. 在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。
B. 处理那些可以撤消的职责。
D. 当不能采用生成子类的方法进行扩充时。
一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。
另一种情况可能是因为类定义被隐藏,或类定义不能用于生成子类。
44.关于模式适用性,在以下情况适合使用FLYWEIGHT(享元)模式?(D)A.一个应用程序使用了大量的对象。
B.完全由于使用大量的对象,造成很大的存储开销。
C.对象的大多数状态都可变为外部状态。
45.关于模式适用性,在以下情况适合使用PROXY(代理)模式?(A)根据需要创建开销很大的对象C.在需要用比较通用和复杂的对象指针代替简单的指针的时候D.取代了简单的指针,它在访问对象时执行一些附加操作。
46.关于模式适用性,在以下情况适合使用CHAIN OF RESPONSIBILITY(职责链) 模式?(B)A. 有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。
C. 你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。
D. 可处理一个请求的对象集合应被动态指定。
47.关于模式适用性,在以下情况适合使用COMMAND(命令)模式?(C)A.抽象出待执行的动作以参数化某对象,使用过程语言中的回调(c a l l b a c k)函数表达这种参数化机制。
B.Java语言中的:AWT的事件处理D. 一个系统需要支持交易(transaction).一个交易结构封装了一组数据更新命令.48.关于模式适用性,在以下情况适合使用OBSERVER(观察者)模式?(D)A.当一个抽象模型有两个方面, 其中一个方面依赖于另一方面。
将这二者封装在独立的对象中以使它们可以各自独立地改变和复用。
B.当对一个对象的改变需要同时改变其它对象, 而不知道具体有多少对象有待改变。
C. 当一个对象必须通知其它对象,而它又不能假定其它对象是谁。
换言之, 你不希望这些对象是紧密耦合的。
49.关于模式适用性,在以下情况适合使用STRATEGY(策略) 模式?(A)B.许多相关的类仅仅是行为有异。
“策略”提供了一种用多个行为中的一个行为来配置一个类的方法。
C. 需要使用一个算法的不同变体。
例如,你可能会定义一些反映不同的空间/时间权衡的算法。
当这些变体实现为一个算法的类层次时[ H O 8 7 ] ,可以使用策略模式。
D. 算法使用客户不应该知道的数据。
可使用策略模式以避免暴露复杂的、与算法相关的数据结构。