C#设计模式试题.docx

上传人:b****8 文档编号:10285012 上传时间:2023-02-09 格式:DOCX 页数:12 大小:47.89KB
下载 相关 举报
C#设计模式试题.docx_第1页
第1页 / 共12页
C#设计模式试题.docx_第2页
第2页 / 共12页
C#设计模式试题.docx_第3页
第3页 / 共12页
C#设计模式试题.docx_第4页
第4页 / 共12页
C#设计模式试题.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

C#设计模式试题.docx

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

C#设计模式试题.docx

C#设计模式试题

一、简答题(10分)

1.1(3分)什么是设计模式?

设计模式的目标是什么?

设计模式是软件设计过程当中某一类常见问题的一般性问题的解决方案。

1.2(3分)设计模式具有哪三大特点?

1.3(4分)GOF设计模式常用的有几种?

GOF设计模式按照模式的目的可

分为哪三类?

行为型,结构型,创建型

二、填空题(20分,每空2分)

请从外观、访问者、组合、工厂方法、模板方法、观察者、轻量级、

原型、责任链、单例、抽象工厂、命令12种模式中选择10种填入下列的

空缺中。

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

成具体的对象。

2.2(抽象工厂)模式提供一系列相关或相互依赖对象的接口而无需指定它

们具体的类。

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

型实例创建新的对象。

2.4(单例)模式确保某一个类仅有一个实例,并自行实例化并向整个系

统提供这个实例。

2.5(组合)模式将对象组合成树形结构以表示“部分-整体”的层次结

构。

使得用户对单个对象和组合对象的使用具有一致性。

2.6(外观)模式定义了一个高层接口,这个接口使得这一子系统更加容

易使用,为子系统中的一组接口提供一个一致的界面。

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

2.8(责任链)模式使多个对象都有机会处理请求,从而避免请求的发送者

和接收者之间的耦合关系。

2.9(观察者)模式定义对象间的一种一对多的依赖关系,当一个对象的状

态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

2.10(模板)模式定义一个操作中的算法的骨架,而将一些步骤延迟到

子类中。

第3页(共12页)

三、选择题(20分,每题2分)

3.1设计模式具有的优点。

A.适应需求变化B.程序易于理解

C.减少开发过程中的代码开发工作量D.简化软件系统的设计

3.2下图描述了一种设计模式,该设计模式不可以。

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

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

C.使多个对象都有机会处理请求,避免请求的发送者和接收者间的耦

合关系

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

3.3若系统中的某子模块需要为其它模块_____B_____提供访问不同数据库系统

(Oracle、SQLServer、DB2UDB等)的功能,这些数据库系统提供的访

问接口有一定的差异,但访问过程却都是相同的,例如,先连接数据库,

再打开数据库,最后对数据进行查询,设计模式可抽象出相同的数

据库访问过程;

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

3.4系统中的文本显示类(TextView)和图片显示类(PictureView)都继

承了组件类(Component),分别显示文本和图片内容,现需要构造带有滚

动条、或者带有黑色边框、或者既有滚动条又有黑色边框的文本显示控件

和图片显示控件,但希望最多只增加三个类,B

设计模式可以实现该目的。

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

3.5下面的类图表示的是哪个模式?

A、抽象工厂模式(AbstractFactory)

B、工厂方法模式(FactoryMethod)

C、命令模式(Command)

D、责任链模式(ChainofResponsibility)

3.6下面的类图表示的是哪个设计模式?

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

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

3.7下面的类图表示的是哪个模式?

第5页(共12页)

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

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

3.8下面的类图表明了哪个模式?

A、责任链模式(ChainofResponsibility)

B、命令模式(Command)

C、备忘录模式(Memento)

D、工厂方法模式(FactoryMethod)

3.9下面的类图表示的是哪个设计模式?

A、模板方法模式(TemplateMethod)B、命令模式(Command)

C、单例模式(Singleton)D、状态模式(State)

第6页(共12页)

3.10下面的类图表明了哪个模式?

A、模板方法模式(TemplateMethod)B、命令模式(Command)

C、单例模式(Singleton)D、状态模式(State)

四、读程题(30分,每题15分)

4.1在下面的C++代码中,类SalesTicket能够完成打印票据正文的功能,

类HeadDecorator与FootDecorator分别完成打印票据的台头和脚注的功

能。

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

这是票据的台头!

这是票据正文!

这是票据的脚注!

------------------------

这是票据的台头!

这是票据的脚注!

[C++程序代码]

#include

usingnamespacestd;

classSalesTicket{

public:

virtualvoidprintTicket(){cout<<"这是票据正文!

"<

};

classDecorator:

publicSalesTicket{

SalesTicket*ticket;

public:

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

voidprintTicket(){

if(ticket!

=NULL)

ticket->printTicket();

第7页(共12页)

}

};

classHeadDecorator:

publicDecorator{

public:

HeadDecorator(SalesTicket*t):

Decorator(t){}

voidprintTicket(){

cout<<"这是票据的台头!

"<

Decorator:

:

printTicket();

}

};

classFootDecorator:

publicDecorator{

public:

FootDecorator(SalesTicket*t):

Decorator(t){}

voidprintTicket(){

Decorator:

:

printTicket();

cout<<"这是票_______j__据的脚注!

"<

}

};

voidmain(void){

SalesTickett;

FootDecoratorf(&t);

HeadDecoratorh(&f);

h.printTicket();

cout<<"------------------------"<

FootDecoratora(NULL);

HeadDecoratorb(&a);

b.printTicket();

}

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

第8页(共12页)

4.2某游戏公司现欲开发一款面向儿童的模拟游戏,该游戏主要模拟现实

世界中各种鸭子的发声特征、飞行特征和外观特征。

游戏需要模拟的鸭子

种类及其特征如下表所示:

鸭子种类发声特征飞行特征外观特征

灰鸭

(MallardDuck)

发出“嘎嘎”声

(Quack)

用翅膀飞行

(FlyWithWings)

灰色羽毛

红头鸭

(RedHeadDuck)

发出“嘎嘎”声

(Quack)

用翅膀飞行

(FlyWithWings)

灰色羽毛、

头部红色

棉花鸭

(CottonDuck)

不发声

(QuackNoWay)

不能飞行

(FlyNoWay)

白色

橡皮鸭

(RubberDuck)

发出橡皮与空气摩

擦的声(Squeak)

不能飞行

(FlyNoWay)

黑白橡皮

颜色

为支持将来能够模拟更多种类鸭子的特征,采用某设计模式设计的类

图如下所示:

第9页(共12页)

其中,Duck为抽象类,描述了抽象的鸭子,而类RubberDuck、

MallardDuck、CottonDuck和RedHeadDuck分别描述具体的鸭子种类,方

法fly()、quack()和display()分别表示不同种类的鸭子都具有飞行特征、

发声特征和外观特征;类FlyBehavior与QuackBehavior为抽象类,分别

用于表示抽象的飞行行为与发声行为;类FlyNoWay与FlyWithWings分别

描述不能飞行的行为和用翅膀飞行的行为;类Quack、Squeak与QuackNoWay

分别描述发出“嘎嘎”声的行为、发出橡皮与空气摩擦声的行为与不发声

的行为。

[C++代码]

#include

usingnamespacestd;

classFlyBehavior{

public:

virtualvoidfly()=0;

};

classQuackBehavior{

public:

virtualvoidquack()=0;

};

classFlyWithWings:

publicFlyBehavior{

public:

voidfly(){cout<<"使用翅膀飞行!

"<

};

classFlyNoWay:

publicFlyBehavior{

public:

voidfly(){cout<<"不能飞行!

"<

};

classQuack:

publicQuackBehavior{

public:

voidquack(){cout<<"发出\'嘎嘎\'声!

"<

}

};

classSqueak:

publicQuackBehavior{

public:

voidquack(){cout<<"发出空气与橡皮摩擦声!

"<

}

};

classQuackNoWay:

publicQuackBehavior{

public:

voidquack(){cout<<"不能发声!

"<

};

classDuck{

protected:

FlyBehavior*flyBehavior;

QuackBehavior*quackBehavior;

public:

voidfly(){flyBehavior->fly();}

第10页(共12页)

voidquack(){quackBehavior->quack();};

virtualvoiddisplay()=0;

};

classRubberDuck:

publicDuck{

public:

RubberDuck(){

flyBehavior=newFlyNoWay();

quackBehavior=newSqueak();

}

~RubberDuck(){

if(!

flyBehavior)deleteflyBehavior;

if(!

quackBehavior)deletequackBehavior;

}

voiddisplay(){/*此处省略显示橡皮鸭的代码*/}

};

//其它代码省略

请根据上述类图和代码,阐述采用该设计模式进行设计的优势?

第11页(共12页)

五、设计题(20分,每题10分)

请根据下面的叙述,选择正确的设计模式,并给出该设计模式的类图。

5.1为实现应用的界面与应用数据的分离,通常定义应用数据的类和应用

界面类,它们都可以各自独立地被复用,当然它们也可一起工作。

一个表

格对象和一个柱状图对象可使用不同的表示形式描述同一个应用数据对象

的信息。

表格对象和柱状图对象互相并不知道对方的存在,这样使你可以

根据需要单独复用表格或柱状图。

但是它们表现的似乎互相知道彼此的存

在。

当用户改变表格中的信息时,柱状图能立即反映这一变化,反过来也是

如此。

如下图所示:

请根据叙述和上图的描述,选择合适的设计模式,并给出该设计模式的类

图。

第12页(共12页)

5.2一般的企业采购审批都是分级的,采购量的不同就需要不同层次的主

管人员来审批,如主任可以审批1万元以下的采购单,副董事长可以申批

2.5万元以下的采购单,董事长可以审批10万元以下的采购单,10万元以

上的采购单就需要开会决定。

请根据该描述,选择合适的设计模式并给出

其类图。

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

当前位置:首页 > 高等教育 > 军事

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

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