设计模式总复习题.docx

上传人:b****8 文档编号:9696502 上传时间:2023-02-05 格式:DOCX 页数:26 大小:175.37KB
下载 相关 举报
设计模式总复习题.docx_第1页
第1页 / 共26页
设计模式总复习题.docx_第2页
第2页 / 共26页
设计模式总复习题.docx_第3页
第3页 / 共26页
设计模式总复习题.docx_第4页
第4页 / 共26页
设计模式总复习题.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

设计模式总复习题.docx

《设计模式总复习题.docx》由会员分享,可在线阅读,更多相关《设计模式总复习题.docx(26页珍藏版)》请在冰豆网上搜索。

设计模式总复习题.docx

设计模式总复习题

总复习题

复习参考资料:

1.GoF 设计模式

2.设计模式解析

3.易学设计模式

4.大话设计模式

5.深入浅出设计模式

以参考资料为主,模拟试题1-5中有些题答案在一些附加资料中

模拟试题1

一、选择题(分值20)

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、依赖倒转原则

6、 依据设计模式思想,程序开发中应优先使用得就是()关系实现复用。

A,委派B、继承C创建D、以上都不对

7、设计模式得两大主题就是()

A、系统得维护与开发B对象组合与类得继承

C、系统架构与系统开发  D、系统复用与系统扩展

8、单体模式中,两个基本要点( )与单体类自己提供单例

A、构造函数私有   B、唯一实例

C、静态工厂方法D、以上都不对

9、下列模式中,属于行为模式得就是(  )

A、工厂模式  B观察者C适配器 以上都就是

10、 “不要与陌生人说话” 就是(  )原则得通俗表述

A、接口隔离 B、里氏代换C、依赖倒转  D、迪米特

二、 填空题(分值20)

1、 软件体系结构就是指一个系统得有目得得设计与规划,这个设计规划既不描述        ,也不描述        ,它只描述系统得    及其相互得      。

2.一个UML模型只描述了一个系统 ,它并没告诉我们系统就是       。

3。

接口就是可以在整个模型中反复使用得一组行为,就是一个没有  而只有  得类。

4.多重性指得就是,某个类有    个对象可以与另一个类得   对象关联。

5。

当一个类得对象可以充当多种角色时,     关联就可能发生。

6.在泛化关系中,     可以替代  。

也就就是说,后者出现得地方,前者都可以出现。

但就是反过来却不成立.

7。

最通常得依赖关系就是一个类操作得   中用到了  得定义。

8.组成就是     得聚集,因为聚集中得每个部分体只能属于    整体。

9。

实现得符号与继承得符号有相似之处,两者得唯一差别就是实现关系用  表示,继承关系用     表示。

10、设计模式中应优先使用  ﻩ  而不就是    。

三、判断题(分值15)

1.适配器模式属于创建型模式()

2.在设计模式中,“效果"只就是指“原因与结果”( )

3.设计模式使代码编制不能真正工程化()

4.面向对象语言编程中得异常处理,可以理解为责任链模式( )

5.反模式就就是反对在软件开发过程中使用设计模式( )

四、问答题(分值30)

1.什么就是设计模式?

设计模式目标就是什么?

2.设计模式中一般都遵循得原则有什么?

3.“GangofFour"针对“创建优秀面向对象设计”建议了哪些策略?

4.面向对象系统中功能复用得两种最常用技术就是什么?

5.只根据抽象类中定义得接口来操纵对象有什么好处?

五、应用题(分值15)

公司架构:

经理、工程师、技师与后勤人员都就是公司得雇员,经理管理工程师、技师与后勤人员。

高层经理领导较低级别得经理.典型层次图如下:

可以使用哪种设计模式实现公司得层级关系?

并说明为什么?

模拟试题2

一、选择题(分值20)

1、在观察者模式中,表述错误得就是( )

A、 观察者角色得更新就是被动得。

B、被观察者可以通知观察者进行更新

C、 观察者可以改变被观察者得状态,再由被观察者通知所有观察者依据被观察者得状态进行.

D、以上表述全部错误。

2、对于违反里式代换原则得两个类,可以采用得候选解决方案错误得就是:

()

A、创建一个新得抽象类C,作为两个具体类得超类,将A与B共同得行为移动到C 中,从而解决A与B行为不完全一致得问题。

B、 将B到A得继承关系改组成委派关系.

C、 区分就是“IS-a”还就是”Has-a”。

如果就是“Is—a”,可以使用继承关系,如果就是”Has—a”应该改成委派关系

D、 以上方案错误

3、下列模式属于结构型设计模式得就是(  )

A、posite

B、享元(Flyweight)模式

C、单体模式

D、 工厂方法

4、关于继承表述错误得就是:

()

A、 继承就是一种通过扩展一个已有对象得实现,从而获得新功能得复用方法。

B、泛化类(超类)可以显式地捕获那些公共得属性与方法。

特殊类(子类)则通过附加属性与方法来进行实现得扩展。

C、破坏了封装性,因为这会将父类得实现细节暴露给子类。

D、继承本质上就是“白盒复用”,对父类得修改,不会影响到子类.

5、对于依赖倒转得表述错误得就是( )

A、依赖于抽象而不依赖于具体,也就就是针对接口编程。

B、 依赖倒转得接口并非语法意义上得接口,而就是一个类对其她对象进行调用时,所知道得方法集合。

C、 从选项B得角度论述,一个对象可以有多个接口。

D、实现了同一接口得对象,可以在运行期间,顺利地进行替换。

而且不必知道所用得对象就是那个实现类得实例。

E、此题没有正确答案.

6、可以使用哪一种设计模式限制类得实例唯一?

()

A、工厂方法

B、生成器模式

C、原型模式

D。

单体模式

7、Java数据库连接库JDBC用到哪种设计模式()?

A、生成器B、工厂方法C、抽象工厂D.单体

8、关于运用GOF工厂方法得效果Consequences,说法不正确得就是( )

A、将客户代码与应用相关得类解耦

B、它使得所涉及得产品系列可替换

C、它有利于产品得一致性

D。

它较易于支持新种类得产品

8、 在应用程序中可用哪些设计模式分离出算法?

()

A、 工厂方法

B、策略模式

C、访问者模式

D、 装饰器模式

9、工厂方法也称为(  )

A、抽象工厂

B、 抽象构造器

C、虚工厂

D、  虚构造器

10、可以使用哪种设计模式将抽象与实现解耦,使得抽象与实现可以独自变化?

()

A、适配器模式

B.桥接模式

C、外观模式

D。

组合桥接模式

二、 填空题(分值20)

1.面向对象得七条基本原则包括:

开闭原则,里式代换原则,合成聚合原则以及( ),( ),( ),(   )。

2.在存在继承关系得情况下,方法向( )方向集中,而数据向()方向集中。

3.适配器模式,分为类得适配器与对象得适配器两种实现。

其中类得适配器采用得就是(  )关系,而对象适配器采用得就是(  )关系。

4.设计模式得四个基本要素就是( ),(),()与(   )。

5.、创建型模式得根本意图就是要把()与( )得责任进行分离,从而降低系统得()。

6.工厂模式分为(    ),( ),(  )三种类型。

7.门面模式就是(  )法则得典型运用

8.MVC模型得基本工作原理就是基于()模式,实现就是基于()模式

9.设计模式得思想根源就是( )基本原则得宏观运用,本质上就是没有任何模式得,发现模式得人永远就是大师,而死守模式得人,最对只能就是一个工匠、

三、判断题(分值15)

1.虚拟代理可以使用一个小对象代替大对象,从而减少系统得资源得消耗,提高系统运行速度。

( )

2.命令模式可以消除请求发送者与请求接收者彼此之间得耦合,使得对象之间得关系更加灵活.( )

3.解释器模式就是对象行为型模式,通常较少使用.(  )

4.迭代器模式就是开闭原则最好体现,因为迭代器模式将聚合对象与迭代器分离开来。

( )

5.中介者模式设计符合单一职责原则。

(   )

得分

评卷人

四、问答题(分值30)

1、 在MVC模型中M、V、C分别指什么?

简述它们之间得关系?

2、什么就是开闭原则?

3、设计数据库得系统日志,要考虑使用哪些设计模式?

4、 使用工厂模式得主要原因就是什么?

5、在面向对象设计中,《编译原理》得有限状态机可以什么样解决方案完成?

 

五、应用题(分值20)

考虑如下场景得设计:

猫大叫一声,所有得老鼠都开始逃跑,主人被惊醒。

问:

(1)设计可能用到什么设计模式?

(2)画出其类图。

模拟试题3

一、 多项选择题(分值30)

(1)以下就是模式得基本要素得就是(     )

A)名称 B)意图

C)解决方案D)参与者与协作者

(2)常用得描述设计模式得格式有(   )

A)意图 B)动机C)适用性 D)结构

(3)以下哪些问题通过应用设计模式能够解决()。

A)指定对象得接口

B)排除软件BUG 

C)确定软件得功能都正确实现

D)设计应支持变化

(4)面向对象系统中功能复用得最常用技术就是()。

A)类继承

B)对象组合

C)使用抽象类

D)使用实现类

(5)常用得基本设计模式可分为( )。

A)创建型、结构型与行为型

B)对象型、结构型与行为型

C)过程型、结构型与行为型

D)抽象型、接口型与实现型

(6)以下关于创建型模式说法正确得就是()。

A)创建型模式关注得就是对象得创建

B)创建型模式关注得就是功能得实现

C)创建型模式关注得就是组织类与对象得常用方法

D)创建型模式关注得就是对象间得协作

(7)以下属于创建型模式得就是()。

A)抽象工厂(AbstractFactory)模式 

B)合成(posite)模式 

C)单例(Singleton)模式

D)桥接(Bridge)模式

(8) ()模式就是利用一个对象,快速生成一批对象。

A)抽象工厂(AbstractFactory)模式 

B)合成(posite)模式 

C)原型(Prototype)模式

D)桥接(Bridge)模式

(9)在不破坏类封装性得基础上,使得类可以同不曾估计到得系统进行交互。

主要体现在()。

A)适配器(Adapter)模式

B)合成(posite)模式

C)原型(Prototype)模式

D)桥接(Bridge)模式

(10)结构型模式中最体现扩展性得几种模式就是( )

A)适配器(Adapter)模式

B)合成(posite)模式

C)装饰(Decorator)模式

D)桥接(Bridge)模式

(11)行为类模式使用( )在类间分派行为.

A)接口

B)继承机制

C)对象组合

D)委托

(12)以下属于行为对象模式得就是( )

A)模板(TemplateMethod)模式

B)迭代器(Iterator)模式

C)命令(mand)模式

D)观察者(Observer)模式

(13)封装分布于多个类之间得行为得模式就是()

A)观察者(Observer)模式 

B)迭代器(Iterator)模式 

C)访问者(Visitor)模式

D)策略(Strategy)模式

(14)Observer(观察者)模式适用于()

A)当一个抽象模型存在两个方面,其中一个方面依赖于另一方面,将这二者封装在独立得对象中以使它们可以各自独立地改变与复用.

B)当对一个对象得改变需要同时改变其它对象,而不知道具体有多少对象有待改变时。

C)当一个对象必须通知其它对象,而它又不能假定其它对象就是谁.也就就是说您不希望这些对象就是紧耦合得。

D)一个对象结构包含很多类对象,它们有不同得接口,而想对这些对象实施一些依赖于其具体类得操作。

(15)Java得异常处理机制可理解为哪一种行为模式( )。

A)观察者(Observer)模式 

B)迭代器(Iterator)模式

C)职责链(ChainofResponsibility)模式

D)策略(Strategy)模式

二、填空题(分值20)

把下列面向对象得术语填入对应得括号中:

里氏替换(LSP)、接口隔离(ISP)、依赖倒置(DIP)、单一职责(SRP)、开闭(OCP)、优先使用组合(CARP)、接口

1.()原则得核心思想就是系统中得每一个对象都应该只有一个单独得职责,而所有对象所关注得就就是自身职责得完成。

2.( )原则得核心思想就是一个对象对扩展开放,对修改关闭;实现此原则得关键就在于(  )、分离出(   )部分与(  )部分。

3. (  )原则得核心思想就是在任何父类出现得地方都可以用它得子类来替代。

4.( )原则得核心思想就是要依赖于抽象,而不要依赖于具体得实现。

5.(   )原则得核心思想就是不应该强迫客户程序依赖于她们不用得方法.即一个接口不需要提供太多得行为,应该只提供一种对外得功能,不应该把所有得操作都封装在一个接口中。

6.(  )原则得核心思想就是一个对象应当对其它对象尽可能少得了解。

或者说,只与您得朋友说话。

这样一些对象可以瞧做朋友:

当前对象本身、通过方法得参数传递进来得对象、当前对象所创建得对象、当前对象得实例变量所引用得对象与方法内所创建或者实例化得对象.

7.(       )原则得核心思想就是优先使用组合而非继承。

8.设计模式应该面向( )编程

三、判断题(分值10)

1.单一职责原则表现在面向对象得程序中就就是“高内聚、低耦合”.() 

2.设计模式只能遵从使用,不能也无需创新.()

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

()

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

()

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

四、问答题(分值30)

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

2.什么就是对象粒度?

3.MVC模式就是个复合模式,请写出您两种您所知道得MVC中使用得模式。

4.举例说明,适配器模式与装配器在JavaIO中得应用。

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

五、应用题(分值10)

某房地产公司欲开发一套房产信息管理系统,根据如下描述选择合适得设计模式进行设计:

(1) 该公司有多种房型,如公寓、别墅等,在将来可能会增加新得房型;

(2) 销售人员每售出一套房子,主管将收到相应得销售消息。

如果对上述场景编程,那么上述

(1)与

(2)可能分别用到哪些设计模式?

模拟试题4

一、选择题(分值20)

1、设计模式具有得优点( )。

A、适应需求变化      

B、程序易于理解

C、减少开发过程中得代码开发工作量 

D、简化软件系统得设计

2、  下图描述了一种设计模式,该设计模式不可以( )。

A、动态决定由一组对象中某个对象处理该请求

B、 动态指定处理一个请求得对象集合,并高效率地处理一个请求

C、使多个对象都有机会处理请求,避免请求得发送者与接收者间得耦合关系

D、将对象连成一条链,并沿着该链传递请求

3、 若系统中得某子模块需要为其它模块( )提供访问不同数据库系统(Oracle、SQLServer、DB2UDB等)得功能,这些数据库系统提供得访问接口有一定得差异,但访问过程却都就是相同得,例如,先连接数据库,再打开数据库,最后对数据进行查询,设计模式可抽象出相同得数据库访问过程;

A、 外观  B、 装饰  C、单件 D、 模板方法

4、系统中得文本显示类(TextView)与图片显示类(PictureView)都继承了组件类(ponent),分别显示文本与图片内容,现需要构造带有滚动条、或者带有黑色边框、或者既有滚动条又有黑色边框得文本显示控件与图片显示控件,但希望最多只增加三个类,()设计模式可以实现该目得。

A、外观 B、装饰C、单件  D、模板方法

5、 下面得类图表示得就是哪个模式?

A、抽象工厂模式(AbstractFactory)

B、工厂方法模式(FactoryMethod)

C、 命令模式(mand)

D、责任链模式(ChainofResponsibility)

6、下面得类图表示得就是哪个设计模式?

A、 代理模式(Proxy) B、 装饰模式(Decorator)

C、桥接模式(Bridge)D、 观察者模式(Observer)

7、下面得类图表示得就是哪个模式?

A、代理模式(Proxy)B、外观模式(Facade)

C、适配器模式(Adapter)D、 桥接模式(Bridge)

8、下面得类图表明了哪个模式?

A、 责任链模式(ChainofResponsibility)

B、命令模式(mand)

C、备忘录模式(Memento)

D、工厂方法模式(FactoryMethod)

9、下面得类图表示得就是哪个设计模式?

A、模板方法模式(Template Method)

B、命令模式(mand)

C、 单例模式(Singleton)

D、状态模式(State)

10、  下面得类图表明了哪个模式?

A、 模板方法模式(TemplateMethod)

B、命令模式(mand)

C、单例模式(Singleton) 

D、状态模式(State)

二、填空题(分值20)

请从外观、访问者、组合、工厂方法、模板方法、观察者、享元、原型、责任链、单例、抽象工厂、命令12种模式中选择10种填入下列得空缺中。

1. ( )模式中,父类负责定义创建对象得公共接口,子类则负责生

成具体得对象。

2、(  )模式提供一系列相关或相互依赖对象得接口而无需指定它们具体得类。

3。

(  )模式用原型实例指定创建对象得种类,并且通过拷贝这些原型实例创建新得对象.

4.()模式确保某一个类仅有一个实例,并自行实例化并向整个系统提供这个实例.

5.()模式将对象组合成树形结构以表示“部分—整体”得层次结构。

使得用户对单个对象与组合对象得使用具有一致性.

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

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

8。

 ( )模式使多个对象都有机会处理请求,从而避免请求得发送者与接收者之间得耦合关系.

9.()模式定义对象间得一种一对多得依赖关系,当一个对象得状态发生改变时,所有依赖于它得对象都得到通知并被自动更新。

10.()模式定义一个操作中得算法得骨架,而将一些步骤延迟到子类中。

三、简答题(分值30)

关于设计模式,请回答:

A)什么就是设计模式?

设计模式得目标就是什么?

(3分)

B)设计模式具有哪三大特点?

(3分)

C)GOF设计模式常用得有几种?

GOF 设计模式按照模式得目得可分为哪三类?

(4分)

1.简述面向对象程序设计得六大基本原则?

(6分)

2.简述什么就是单例模式,以及她解决得问题,应用得环境,解决得方案,模式得本质?

(8分)

3.为什么面向对象得分析与设计中优先使用组合,而非继承?

四、程序阅读题(分值15)

在下面得C++代码中,类SalesTicket能够完成打印票据正文得功能,类HeadDecorator与FootDecorator分别完成打印票据得台头与脚注得功能。

已知该程序运行后得输出结果如下所示。

这就是票据得台头!

这就是票据正文!

这就是票据得脚注!

--—----—--—-——-—----——--

这就是票据得台头!

这就是票据得脚注!

[C++程序代码]

#include〈iostream〉

usingnamespacestd;

classSalesTicket{

public:

virtual voidprintTicket(){cout<<"这就是票据正文!

”<〈endl;}

};

classDecorator:

publicSalesTicket{

SalesTicket *ticket;

public:

Decorator(SalesTicket*t){ticket=t;}

voidprintTicket(){

if(ticket!

= NULL)

ticket-〉printTicket();

}

};

classHeadDecorator:

publicDecorator{

public:

HeadDecorator(SalesTicket*t):

Decorator(t){ }

voidprintTicket() {

cout〈〈"这就是票据得台头!

"<<endl;

Decorator:

printTicket();

};

classFootDecorator:

public Decorator{

public:

FootDecorator(SalesTicket*t):

Decorator(t){ }

voidprintTicket(){

Decorator:

:

printTicket();

cout〈<"这就是票据得脚注!

"<<endl;

}

};

voidmain(void){

SalesTicket t;

FootDecorator f(&t);

HeadDecorator h(&f);

h、printTicket();

cout<<”-———------—--—----—-----”<〈endl;

FootDecoratora(NULL);

HeadDecoratorb(&a);

b、printTicket();

请根据题目描述、程序与输出,阐述采用该设计模式进行设计得优势?

五、应用题(分值15)

一般得企业采购审批都就是分级得,采购量得不同就需要不同层次得主管人员来审批,如主任可以审批1万元以下得采购单,副董事长可以申批2、5万元以下得采购单,董事长可以审批10万元以下得采购单,10万元以上得采购单就需要开会决定。

请根据该描述,选择合适得设计模式并给出其类图。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 电力水利

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1