设计模式考试复习题(含答案) 联系客服

发布时间 : 星期六 文章设计模式考试复习题(含答案)更新完毕开始阅读9351ff6adc36a32d7375a417866fb84ae55cc368

一、 多项选择题

(1)以下是模式的基本要素的是(ABCD)A名称B意图C)解决方案D)参与者和协作者 (2)常用的描述设计模式的格式有(ABCD)A)意图B)动机C)适用性D)结构

(3)以下哪些问题通过应用设计模式能够解决(AD)A指定对象的接口D设计应支持变化 (4)面向对象系统中功能复用的最常用技术是( AB )。A)类继承B)对象组合 (5)常用的基本设计模式可分为( A )。A)创建型、结构型和行为型

(6)以下关于创建型模式说法正确的是(A )。A)创建型模式关注的是对象的创建 (7)以下属于创建型模式的是(AC )。

A)抽象工厂(Abstract Factory)模式 C)单例(Singleton)模式

(8) ( C )模式是利用一个对象,快速生成一批对象。C)原型(Prototype)模式 (9)在不破坏类封装性的基础上,使得类可以同不曾估计到的系统进行交互。主要体现在

( AD )。 A)适配器(Adapter)模式D)桥接(Bridge)模式

(10)结构型模式中最体现扩展性的几种模式是( C ) C)装饰(Decorator)模式 (11)行为类模式使用( C )在类间分派行为。C)对象组合

(12)以下属于行为对象模式的是(ABCD ) A)模板(Template Method)模式 B)迭代器

(Iterator)模式C)命令(Command)模式D)观察者(Observer)模式 (13)封装分布于多个类之间的行为的模式是( C ) C)访问者(Visitor)模式

(14)Observer(观察者)模式适用于(C)。(C)当一个对象必须通知其它对象,而它又不

能假定其它对象是谁。也就是说你不希望这些对象是紧耦合的。

(15)Java的异常处理机制可理解为哪一种行为模式( C )。C)职责链(Chain of

Responsibility)模式 二、 填空题(分值20)

1. (单一职责)原则的核心思想是系统中的每一个对象都应该只有一个单独的职责,而所

有对象所关注的就是自身职责的完成。

2. ( 开闭 )原则的核心思想是一个对象对扩展开放,对修改关闭;实现此原则的关键

就在于( 抽象 )、分离出( 扩展 )部分和( 修改 )部分。

3. (里氏替换)原则的核心思想是在任何父类出现的地方都可以用它的子类来替代。 4. (依赖倒置)原则的核心思想是要依赖于抽象,而不要依赖于具体的实现。

5. (接口隔离)原则的核心思想是不应该强迫客户程序依赖于他们不用的方法。即一个

接口不需要提供太多的行为,应该只提供一种对外的功能,不应该把所有的操作都封装在一个接口中。

6. (迪米特)原则的核心思想是一个对象应当对其它对象尽可能少的了解。或者说,只

和你的朋友说话。这样一些对象可以看做朋友:当前对象本身、通过方法的参数传递进来的对象、当前对象所创建的对象、当前对象的实例变量所引用的对象和方法内所创建或者实例化的对象。

7. (优先使用组合)原则的核心思想是优先使用组合而非继承。 8. 设计模式应该面向( 对象 )编程 三、 判断题(分值10)

1. 单一职责原则表现在面向对象的程序中就是“高内聚、低耦合”。(T) 2. 设计模式只能遵从使用,不能也无需创新。(F)

3. 在面向对象编程时,无论何时何地都要使用GoF所给出的设计模式,这样编写的代码才

比较好。( F)

4. 工厂方法能够提高内聚性,松散耦合,并且有助于测试。( F )

5. 对象要么构造其它对象,要么使用其它对象,绝不要两者兼顾。( T )

问答题

1、单例模式的两种实现方法,并说明优缺点?

(1)懒汉式,在类被加载时,唯一的实例已经被创建。这个模式在java中很容易实现,在其他语言中很难.

(2)饿汉式,在类加载的时候不创建单例实体。只有在第一次请求实例的时候创建,并且只在第一次创建后不再创佳该类的实例 2 、什么是对象粒度?

所谓的对象粒度就是对象从抽象到具体的描述的程度。同样一个系统,同样的需求。两个设计师给出两种设计。两个设计代码行数差不多,但是类的数目不同。例如有一个对象,我可以用10行代码去构造它,我也可以用20行代码,后者比前者更为精确。 3、MVC模式是个复合模式,请写出你两种你所知道的MVC中使用的模式。 (1)观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

(2)策略模式:定义了算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。

4、举例说明,适配器模式和装配器在Java IO中的应用。 (1装饰者模式:在由InputStream,OutputStream,Reader和Writer代表的等级结构内部,有一些流处理器可以对另一些流处理器起到装饰作用,形成新的,具有改善了的功能的流处理器。装饰者模式是Java I/O库的整体设计模式。这样的一个原则是符合装饰者模式的 (2适配器模式:在由InputStream,OutputStream,Reader和Writer代表的等级结构内部,有一些流处理器是对其它类型的流源的适配。这就是适配器模式的应用,适配器模式应用到了原始流处理器的设计上面,构成了I/O库所有流处理器的起点。

5、 在面向对象程序设计中,常常需要避免过多case语句或者if语句,请给出一种设计模式避免过多的条件分支语句,同时指出这种设计模式如何帮助避免过多的Case语句? 访问者模式。例如

switch(pt){ case A: break; case B: break; ..... } 1.把每个条件作成一个类,比如 A条件

class A { public void accept() {//处理逻辑 } } 2、然后把每个条件的处理方法都用一个类来管理.

public class CommonVisitor{ public void visit(A a){ a.accept();}//其他条件的访问方法

public void visit(B b){ b.accept();}} 3、main里面就这样调用就行.

public static void main(Stirng args[]){

CommonVisitor visitor = new CommonVisitor();//如果是想用A条件,则 visitor.visit(new A());}

这样写的好处,以后先加条件的话我只需要定义新的条件类就行,还有就是在CommonVisitor添加新条件的访问方法就行,这样就很好作到一个条件管理一个逻辑 五、应用题(分值10)

某房地产公司欲开发一套房产信息管理系统,根据如下描述选择合适的设计模式进行设计: (1) 该公司有多种房型,如公寓、别墅等,在将来可能会增加新的房型; (2) 销售人员每售出一套房子,主管将收到相应的销售消息。

如果对上述场景编程,那么上述(1)和(2)可能分别用到哪些设计模式?

对于描述(1)可以选择使用工厂方法模式,对于描述(2)可以选择使用观察者模式,本题参考类图如下所示:

1. 设计模式具有的优点( A )。A. 适应需求变化

2. 下图描述了一种设计模式(Client),该设计模式不可以( A )。A. 动态决定由一组对象中某个对象处理该请求

3. 若系统中的某子模块需要为其它模块提供访问不同数据库系统(Oracle、SQL Server、DB2 UDB 等)的功能, ( B )设计模式可抽象出相同的数据库访问过程;B. 装饰 4. 系统中的文本显示类(TextView)和图片显示类(PictureView)都继承了组件类(Component),但希望最多只增加三个类,( B )设计模式可以实现该目的。B. 装饰 5. 下面的类图表示的是哪个模式{AbstractFactory}( A ) A. 抽象工厂模式

6. 下面的类图表示的是哪个设计模式{Subject}( D ) D. 观察者模式(Observer) 7. 下面的类图表示的是哪个模式{Fa?ade}( B ) B. 外观模式(Facade)

8. 下面的类图表明了哪个模式{Product}( D ) D. 工厂方法模式(Factory Method) 9. 下面的类图表示的是哪个设计模式{Context}( D ) D. 状态模式(State) 10. 下面的类图表明了哪个模式{Singleton}( C ) C. 单例模式(Singleton) 二、 填空题(分值20)

1.(工厂方法)模式中,父类负责定义创建对象的公共接口,子类则负责生 成具体的对象。

2.(抽象工厂)模式提供一系列相关或相互依赖对象的接口而无需指定它们具体的类。 3(原型)模式用原型实例指定创建对象的种类,并且通过拷贝这些原型实例创建新的对象。 4.(单例)模式确保某一个类仅有一个实例,并自行实例化并向整个系统提供这个实例。 5. (组合)模式将对象组合成树形结构以表示“部分-整体”的层次结构。使得用户对单个对象和组合对象的使用具有一致性。

6. (外观)模式定义了一个高层接口,这个接口使得这一子系统更加容易使用,为子系统中的一组接口提供一个一致的界面。

7. (享元)模式运用共享技术有效地支持大量细粒度的对象。

8. (责任链)模式使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。 9. (观察者)模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。

10. (模板方法)模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 三、简答题(分值30) 关于设计模式,请回答:

1、 什么是设计模式?设计模式的目标是什么?

(1)、设计模式是一套被反复使用,多数人知晓的,经过分类编写的代码设计经验的总结。 (2)、目标:为了可重用代码,让代码更容易被他人理解,保证代码可靠性。 2、 设计模式具有哪三大特点?

(1)、可重用性,对相同类型问题反复出现,尽管问题的环境有不同,但解决方案有效。 (2)、可传授性,问题反复出现,解决问题的方案相同,大家都接受该解决方案。。 (3)、名称,每个设计模式都有名称。

3、 GOF 设计模式常用的有几种?GOF 设计模式按照模式的目的可分为哪三类?

(1)23中;(2)、结构型,将现存的对象结合在一起。 行为性,提供一种显得灵活变化的行为。 创建型,穿件或实例化对象 1、简述面向对象程序设计的六大基本原则? 答:开闭原则、里氏代换原则、依赖倒转原则、合成/聚合复用原则、迪米特法则、接口隔离原则。

2 、简述什么是单例模式,以及他解决的问题,应用的环境,解决的方案,模式的本质?