设计模式简答题.docx

上传人:b****3 文档编号:4466146 上传时间:2022-12-01 格式:DOCX 页数:23 大小:30.54KB
下载 相关 举报
设计模式简答题.docx_第1页
第1页 / 共23页
设计模式简答题.docx_第2页
第2页 / 共23页
设计模式简答题.docx_第3页
第3页 / 共23页
设计模式简答题.docx_第4页
第4页 / 共23页
设计模式简答题.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

设计模式简答题.docx

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

设计模式简答题.docx

设计模式简答题

1.什么是设计模式?

设计模式的目标是什么?

答:

设计模式通常是对于某一类的软件设计问题的可重用的解决方案,将设计模式引入软件设计和开发过程,其目的就在于要充分利用已有的软件开发经验。

2.设计模式具有哪三大特点?

答:

(1)在特定的场景下有可重用性,对相同类型不同问题的环境,其解决方案都有效。

(2)可传授性,即问题出现的机会很多,解决问题的方案相同,人们相对可以接受。

(3)有表示模式的名称。

3.GOF设计模式常用的有几种?

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

分为哪三类?

答:

行为型,结构型,创建型

4.画出抽象工厂方法类图(这类题自己看书去。

5.针对接口编程,不针对实现编程的意义。

答:

主题与观察者都是用接口:

观察者利用主题的接口向主题注册,而主题利用观察者接口通知观察者。

这样可以让两者之间运作正常,又同时具有松耦合的优点。

6.面向对象(OO)的原则有:

答:

1.封装变化

2.多用组合,少用继承

3.针对接口编程,不针对实现编程

4.为交互对象之间的松耦合设计而努力

5.对扩展开放,对修改关闭

6.依赖抽象,不要依赖具体类

7.只和朋友交谈

8.别找我,我会找你

9.类应该只有一个改变的理由

7.耦合分为几种?

(1)内容耦合

(2)公共耦合(3)外部耦合(4)控制耦合

(5)标记耦合(6)数据耦合(7)非直接耦合

8.GOF模式分为几种,每种包含哪些模式?

答:

分为3种。

创建型设计模式:

简单工厂模式,工厂方法模式,抽象工厂模式,建造者模式,原型模式,单例模式;

结构型设计模式:

适配器模式,桥接模式,组合模式,装饰模式,外观模式,轻量级模式,代理模式;

行为性设计模式:

责任链模式,命令模式,解释器模式,迭代器模式,中介者模式,备忘录模式,观察者模式,状态模式,策略者模式,模板方法模式,访问者模式。

1.不要和陌生人说话”是(D)原则的通俗表述

A.接口隔离

B.里氏代换

C.依赖倒转

D.迪米特

2.当一个抽象模型有两个方面,其中一个方面依赖于另一方面,将这两者封装在独立的对象中以使它们可以各自独立地改变和复用,可以考虑使用(A)

A.观察者模式

B.命令模式

C.适配器模式

D.单例模式

3.对于某些类来说,只有一个实例是非常重要的,例如,系统中可以有都种类型的打印机,但是只能有一个打印机假脱机,只应该一个文件系统和一个窗口管理器,为此,可以使用(C)。

A.工厂模式

B.享元模式

C.单例模式

D.外观模式

4.当需要支持日志修改时,可以考虑使用(A)

A.命令模式

B.工厂模式

C.单例模式

D.适配器模式

5.当需要在不同时刻指定、排列和执行请求是,可以考虑使用(A)。

A.命令模式

B.策略模式

C.适配器模式

D.责任链模式

6.在需要构建一个层次结构的子系统时,可以使用门面模式定义子系统中每层的入口点,可以考虑使用(A)。

A.外观模式

B.工厂模式

C.装饰模式

D.适配器模式

7.希望创建一个可复用的类,该类必须能够与接口不可预订的类协同工作,可以考虑使用(B)

A.桥接模式

B.适配器模式

C.工厂模式

D.装饰模式

8.在面向对象的原则中,(B)表示使用多个专门的接口比使用单一的总接口要好,一个类对另一个来的依赖性应当是建立在最小的接口上的。

A.单一责任原则

B.接口隔离原则

C.依赖倒转原则

D.迪米特原则

9.当需要强调一系列相关产品对象的设计以便进行联合使用,可以考虑使用(A)。

A.工厂模式

B.单例模式

C.建造者模式

D.原型模式

10.当客户程序与抽象类的实现部分之间存在很大的依赖性时,可以考虑使用(D)

A.单例模式

B.享元模式

C.工厂模式

D.外观模式

11.在设计模式中,(D)保证每个类只要单个实例。

A.工厂模式

B.外观模式

C.享元模式

D.单例模式

12.(C)是指以设计复用为目的,采用一种良好定义、正规的、一致的方式记录的软件设计经验。

A.架构

B.UML模型

C.设计模式

D.设计数据

13.在面向对象的的设计原则中,(A)表示高层模块不应该依赖于低层模块,都应该依赖于抽象,抽象不应该依赖于细节,细节应该依赖于抽象。

A.依赖倒转原则

B.开放封闭原则

C.迪米特原则

D.里氏替换原则

14.(A)将整个软件系统划分为模型、视图和控制器三个部分。

A.MVC

B.分层模式

C.管道模式

D.架构模式

15.在面向对象的设计原则中,(B)表示软件实体应当对扩展开放,对修改关闭,即软件实体应当在不修改的前提下扩展。

A.单一责任原则

B.开放封闭原则

C.里氏替换原则

D.迪米特原则

16.在设计模式中,(C)的核心是缓存和共享

A.门面模式

B.工厂模式

C.享元模式

D.单例模式

17.关于适配器模式(Adapter)说法正确的是A

A.将抽象部分与实现部分分离,使得它们两部分可以独立地变化

B.将一个接口转换成为客户想要的另一个接口。

C.组合多个对象形成树形结构以表示整体-部分的结构层次。

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

D.为其他对象提供一个代理或地方以控制对这个对象的访问。

18.迭代器模式(Iterator)模式适用于B

A.需要在不同的时间创建请求,生成请求队列,执行请求。

B.需要遍历访问聚集中的对象而不能暴露聚集中内部结构。

C.想避免抽象方法和其实现方法绑定在一起。

D.一组对象复杂地相互通信但其方法是定义明确的。

19.请说出以下是运用何种设计模式A

abstractclassChess

{

publicabstractvoidDisplay();

}

classBlackChess:

Chess

{

publicoverridevoidDisplay()

{

Console.WriteLine(""黑棋"");

}

}

classChessFactory

{

publicHashtablechesses=newHashtable();

publicChessGetChess(stringkey)

{

Chesschess=(Chess)chesses[key];

if(chess==null)

{

switch(key)

{

case""黑"":

chess=newBlackChess();

break;

case""白"":

chess=newWhiteChess();

break;

}

chesses.Add(key,chess);

}

returnchess;

}

}

A.享元模式(Flyweight)

B.工厂模式(Factory)

C.备忘录模式(Memento)

D.组合模式(Composite)

20.以下哪种设计模式最符合以下场景说明:

【军情的传递】

军队中军情的传递就是一个责任链,下属行动需要上级批准,所以要把行动计划报给上级,上级又传给上级,直至有人可以决定。

一个士兵请求进入反恐行动组,他就会给班长发送请求,班长给排长,排长给连长,这样一直传到军长,由军长进行批准。

A.桥接模式(Bridge)

B.外观模式(Facade)

C.命令模式(Command)

D.责任链模式(ChainofResponsibility)

21.以下哪种设计模式最符合以下场景说明:

D

【电视节目选择器】

电视提供了(creates)面板和遥控器两种节目选择方法,都具有“下一个”和“上一个”按钮来控制转到不同的频道。

A.责任链模式(ChainofResponsibility)

B.观察者模式(Observer)

C.模板方法模式(TemplateMethod)

D.迭代器模式(Iterator)

22.以下哪种设计模式能够支持动态地给一个对象增加其他职责而且在职责整合时支持热插拔B

A.桥接模式(Bridge)

B.装饰模式(Decorator)

C.享元模式(Flyweight)

D.外观模式(Facade)

23.关于设计模式本质的说法,以下哪个是正确的C

A.设计模式利用类的继承来实现功能扩展

B.设计模式利用类的组合来实现功能扩展

C.设计模式就是在不修改原有类的基础上通过新增类来实现功能扩展或功能变更

D.设计模式就是利用类的继承和组合来实现功能扩展或功能变更

24.请说出以下是运用何种设计模式D

abstractclassAbstractFactory

{

publicstaticAbstractFactoryCreateFactory(stringtype)

{

AbstractFactoryfactory=null;

switch(type)

{

case""Bmw"":

factory=newBmwFactory();

break;

case""Audi"":

factory=newAudiFactory();

break;

}

returnfactory;

}

publicabstractAbstractSportsCarCreateSportsCar();

publicabstractAbstractBussinessCarCreateBussinessCar();

}

classBmwFactory:

AbstractFactory

{

publicoverrideAbstractSportsCarCreateSportsCar()

{

returnnewBmw.BmwSportsCar();

}

publicoverrideAbstractBussinessCarCreateBussinessCar()

{

returnnewBmw.BmwBussinessCar();

}

}

A.组合模式(Composite)

B.简单工厂模式(SimpleFactory)

C.工厂方法模式(FactoryMethod)

D.抽象工厂模式(AbstractFactory)

25.以下哪个设计模式最符合以下的场景说明:

A

1.能使客户端独立于产品的创建过程,并且在系统中引入新产品时无需对客户端进行修改。

A.工厂模式(Factory)

B.状态模式(State)

C.享元模式(Flyweight)

D.原型模式(Prototype)

26.以下哪个设计模式是着重于一步步构造一个复杂对象并且是最后步骤才将返回此对象C

A.简单工厂模式(SimpleFactory)

B.抽象工厂模式(AbstractFactory)

C.建造者模式(Builder)

D.单例模式(Singleton)

27.异常处理机制可理解为哪一种行为模式C

A.观察者(Observer)模式

B.迭代器(Iterator)模式

C.职责链(ChainofResponsibility)模式

D.策略(Strategy)模式

28.Observer(观察者)模式适用于C

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

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

C.当一个对象必须通知其它对象,而它又不能假定其它对象是谁。

也就是说你不希望这些对象是紧密耦合的

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

29.封装分布于多个类之间的行为的模式是C

A.观察者(Observer)模式

B.迭代器(Iterator)模式

C.访问者(Visitor)模式

D.策略(Strategy)模式

30.结构型模式中最体现扩展性的几种模式是C

A.适配器(Adapte)模式

B.合成(Composite)模式

C.装饰(Decorator)模式

D.桥接(Bridge)模式

31.常用的基本设计模式可分为A

A.创建型、结构型和行为型

B.对象型、结构型和行为型

C.过程型、结构型和行为型

D.抽象型、接口型和实现型

32.以下关于创建型模式说法正确的是A

A.创建型模式关注的是对象的创建

B.创建型模式关注的是功能的实现

C.创建型模式关注的是组织类和对象的常用方法

D.创建型模式关注的是对象间的协作

33.以下哪个模式是利用一个对象,快速地生成一批对象C

A.抽象工厂(AbstractFactory)模式

B.合成(Composite)模式

C.原型(Prototype)模式

D.桥接(Bridge)模式

34.以下关于抽象工厂模式与建造者模式区别,说法不正确的是C

A.建造者模式着重于一步步构造一个复杂对象;

B.建造者模式在最后一步返回产品;

C.抽象工厂中,产品是立即返回的

D.抽象工厂着重于单个的产品对象。

35.以下对于代理模式,说法不正确的是B

A.虚拟代理:

代理不会生成一个真实的耗费代理,直到非常有必要时(首次有请求0。

用来存放花费大(实例化要很长时间)的真实对象。

B.远程代理:

本地代理对象控制一个本地的对象。

C.安全代理:

代理检查调用真实对象所需要的权限。

D.聪明代理:

当调用真实的对象时,代理处理另外一些事。

36.抽象工厂模式的别名为C

A.虚拟构造器模式

B.静态工厂模式

C.Kit模式

D.多态工厂模式

37.下列模式中,属于结构模式的是(B)。

A.抽象工厂模式

B.装饰模式

C.策略模式

D.建造者模式

38.下列关于静态工厂与工厂方法表述错误的是(A)。

A.两者都满足开闭原则:

静态工厂以ifelse方式创建对象,增加需求的时候会修改源代码

B.静态工厂对具体产品的创建类别和创建时机的判断是混和在一起的,这点在工厂方法中

C.不能形成静态工厂的继承结构

D.在工厂方法模式中,对于存在继承等级结构的产品树,产品的创建是通过相应等级结构的工厂创建的

39.适配器模式是(A)原则的典型应用。

A.合成聚合复用原则

B.里氏代换原则

C.依赖倒置原则

D.迪米特法则

40.下列模式中,不属于创建模式的是(A)。

A.适配器模式

B.工厂方法模式

C.原型模式

D.以上都不是

二、多选题

1.当使用单件(单例)设计模式时,可以获得如下(ABCD)优点。

A.对唯一实例提供受控访问

B.缩小名称空间

C.允许对操作和表示进行精化操作

D.运行可变数目的类实例数

2.从模式所提供的功能性来看,模式可以分为(ACD)

A.创建模式

B.测试模式

C.行为模式

D.结构模式

3.以下属于面向对象的设计原则的有(ABCD)

A.迪米特原则

B.依赖倒转原则

C.接口隔离原则

D.无循环依赖原则(包图)

4.关于外观模式(Facade)说法正确的是?

AB

A.提供一个统一的接口去访问多个子系统的多个不同的接口。

B.提供了一个简单且公用的接口去处理复杂的子系统,并且没有减少子系统的功能。

C.限制了客户的自由,减少了可变性。

D.客户与抽象的实现类中存在若干依赖。

5.关于访问者模式(Visitor)的适用性以下哪些是正确的。

ABC

A.一个对象的结构包含多个不同接口的对象,并且需要根据具体对象作不同的处理。

B.对结构中的对象有很多不同且没有联系的处理,因此需要避免操作将类分离。

C.类中定义的对象结构很少改变,但需要以常地定义处理结构的新操作。

D.需要对行为的算法作很多变动。

6.以下哪些设计模式都可以用来将抽象部分与实现部分分离C

A.适配器模式(Adapter)

B.装饰模式(Decorator)

C.桥接模式(Bridge)

D.代理模式(Proxy)

7.以下属于创建型模式的是AC

A.抽象工厂(AbstractFactory)模式

B.合成(Composite)模式

C.单例(Singleton)模式

D.桥接(Bridge)模式

8.面向对象系统中功能复用的最常用技术是AB

A.类继承

B.对象组合

C.使用抽象类

D.使用实现类

9.以下哪些问题通过应用设计模式能够解决AD

A.指定对象的接口

B.排除软件BUG

C.确定软件的功能都正确实现

D.设计应支持变化

10.以下属于行为对象模式的是ABCD

A.模板(TemplateMethod)模式

B.迭代器(Iterator)模式

C.命令(Command)模式

D.观察者(Observer)模式

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

主要体现在AD

A.适配器(Adapte)模式

B.合成(Composite)模式

C.原型(Prototype)模式

D.桥接(Bridge)模式

12.以下关于抽象工厂设计模式,说法正确的是ABCD

A.提供一系列相互依赖对象的创建工作

B.封装对象常规的创建方法(new)

C.提供统一调用数据访问方法的方式

D.避免调用数据访问方法和具体对象创建工作的紧耦合

三、简答题

1.请简述下,继承在程序设计中,存在的缺陷?

答:

因为在使用继承时,父类的任何改变都可能影响子类的行为,没有助于保持每个类的单一职责原则。

2.简述下,结构型模式一共有多少种,分别为哪些?

代理模式、装饰模式和适配器模式,有什么区别,如何区分应用在具体事例中。

并请举例说明。

答:

一共有7种,分别为组合模式、装饰模式、外观模式、享元模式、代理模式、适配器模式、桥接模式;1适配器模式是将一个类(a)通过某种方式转换成另一个类(b).

 2装饰模式是在一个原有类(a)的基础之上增加了某些新的功能变成另一个类(b).

 3代理模式是将一个类(a)转换成具体的操作类(b).

3.简述下,创建型模式一共有多少种,分别为哪些?

工厂方法模式、抽象工厂模式与建造者模式,有什么区别,如何区分应用在具体事例中。

并请举例说明。

一共6钟,分别是简单工厂,工厂方法模式,抽象工厂模式,建造者模式,原型模式,单例模式。

工厂只不过是对一个产品的封装,而抽象工厂是对一系列相关产品的封装,建造者也是一种封装,只是它封装的是过程。

4.您现负责通过文件操作的开发框架设计任务。

经过调研后,您发现公司已经封装好一个类专门用于提供txt,XML,Word,Excel文件操作的功能。

为了使得开发框架能最大的程度的复用,您该如何设计您的开发框架。

现提出几点技术意见:

1.本框架提供对各类文件(txt,XML,Word,Excel)的通用读取和写入功能。

2.在文件读写时,能支持字符转码和字符转字节这两个功能的热插拔。

3.在文件读写时,能支持处理过程动作自定义,即:

在文件读写正在进行中能加入业务功能。

例如:

每读取100个字节,则滚动条增加一格。

根据以上的说明,详细阐述该结合使用哪几种设计模式来实现以上的开发框架。

5.根据以下场景说明,请选用最佳的设计模式,并说明该设计模式的原理及其优缺点?

场景:

你在淘宝网上开了一间个人网店,你与买家之间不是面对面的现金交易,而是通过淘宝网的支付宝系统进行电子货币虚拟交易。

你网店的营业金额从支付宝里取,买家也把应支付的金额交给支付宝。

适配器模式,一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。

6.根据以下场景说明,请选用最佳的设计模式,并说明该设计模式的原理及其优缺点?

场景:

你拿出上次旅行时所拍摄的个人写真照片,但你发觉你看来看去都不顺眼,于是你到礼品店买了个相框,结果你发现相框整体感还是达不到你的要求,所以你在相框上贴了一些小东西。

经过你一番的努力,相框的整体感觉终于符合你的期望了。

装饰模式:

装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案,提供比继承更多的灵活性。

动态给一个对象增加功能,这些功能可以再动态的撤消。

增加由一些基本功能的排列组合而产生的非常大量的功能。

7.根据以下场景说明,请选用最佳的设计模式,并说明该设计模式的原理及其优缺点?

场景:

你与家人商量周末自驾一同前往海滩度假,以下是你和家人的对话.

妹妹:

“我想把芭比娃娃带上车。

我:

“好好,还有呢?

妈妈:

“得把家里的个人日用品带上车。

我:

“好好,还有呢?

爸爸:

“车上得备上几瓶好酒。

我:

“好好,还有呢?

........

到了周末,我把所有的东西一件一件装上车,一路颠簸终于到了海滩。

迭代子模式:

迭代子模式可以顺序访问一个聚集中的元素而不必暴露聚集的内部表象。

多个对象聚在一起形成的总体称之为聚集,聚集对象是能够包容一组对象的容器对象。

迭代子模式将迭代逻辑封装到一个独立的子对象中,从而与聚集本身隔开。

迭代子模式简化了聚集的界面。

每一个聚集对象都可以有一个或一个以上的迭代子对象,每一个迭代子的迭代状态可以是彼此独立的。

迭代算法可以独立于聚集角色变化。

8.根据以下场景说明,请选用最合适的设计模式,并阐述该设计模式的原理及其优缺点?

场景:

假设某天你请朋友吃饭,麦当劳的鸡翅和肯德基的鸡翅都是朋友爱吃的东西,虽然口味有所不同,但不管你带朋友去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。

工厂模式:

客户类和工厂类分开。

消费者任何时候需要某种产品,只需向工厂请求即可。

消费者无须修改

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

当前位置:首页 > 高中教育 > 语文

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

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