设计模式总复习题_第1页
设计模式总复习题_第2页
设计模式总复习题_第3页
设计模式总复习题_第4页
设计模式总复习题_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

总复习题复习参考资料:GoF设计模式设计模式解析易学设计模式大话设计模式进一步浅出设计模式以参考资料为主,模拟试题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)适配器模式属于创建型模式()在设计模式中,“效果”只是指“因素和结果”()设计模式使代码编制不能真正工程化()面向对象语言编程中的异常解决,可以理解为责任链模式()反模式就是反对在软件开发过程中使用设计模式()四、问答题(分值30)什么是设计模式?设计模式目的是什么?设计模式中一般都遵循的原则有什么?“GangofFour”针对“创建优秀面向对象设计”建议了哪些策略?面向对象系统中功能复用的两种最常用技术是什么?只根据抽象类中定义的接口来操纵对象有什么好处?五、应用题(分值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.CompositeB.享元(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)面向对象的七条基本原则涉及:开闭原则,里式代换原则,合成聚合原则以及(),(),(),()。在存在继承关系的情况下,方法向()方向集中,而数据向()方向集中。适配器模式,分为类的适配器和对象的适配器两种实现。其中类的适配器采用的是()关系,而对象适配器采用的是()关系。设计模式的四个基本要素是(),(),()和()。.创建型模式的主线意图是要把()和()的责任进行分离,从而减少系统的()。工厂模式分为(),(),()三种类型。门面模式是()法则的典型运用MVC模型的基本工作原理是基于()模式,实现是基于()模式设计模式的思想根源是()基本原则的宏观运用,本质上是没有任何模式的,发现模式的人永远是大师,而死守模式的人,最对只能是一个工匠.三、判断题(分值15)虚拟代理可以使用一个小对象代替大对象,从而减少系统的资源的消耗,提高系统运营速度。()命令模式可以消除请求发送者与请求接受者彼此之间的耦合,使得对象之间的关系更加灵活。()解释器模式是对象行为型模式,通常较少使用。()迭代器模式是开闭原则最佳体现,由于迭代器模式将聚合对象和迭代器分离开来。()中介者模式设计符合单一职责原则。()得分评卷人四、问答题(分值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)排除软件BUGC)拟定软件的功能都正的确现D)设计应支持变化(4)面向对象系统中功能复用的最常用技术是()。A)类继承B)对象组合C)使用抽象类D)使用实现类(5)常用的基本设计模式可分为()。A)创建型、结构型和行为型B)对象型、结构型和行为型C)过程型、结构型和行为型D)抽象型、接口型和实现型(6)以下关于创建型模式说法对的的是()。A)创建型模式关注的是对象的创建B)创建型模式关注的是功能的实现C)创建型模式关注的是组织类和对象的常用方法D)创建型模式关注的是对象间的协作(7)以下属于创建型模式的是()。A)抽象工厂(AbstractFactory)模式B)合成(Composite)模式C)单例(Singleton)模式D)桥接(Bridge)模式(8)()模式是运用一个对象,快速生成一批对象。A)抽象工厂(AbstractFactory)模式B)合成(Composite)模式C)原型(Prototype)模式D)桥接(Bridge)模式(9)在不破坏类封装性的基础上,使得类可以同不曾估计到的系统进行交互。重要体现在()。A)适配器(Adapter)模式B)合成(Composite)模式C)原型(Prototype)模式D)桥接(Bridge)模式(10)结构型模式中最体现扩展性的几种模式是()A)适配器(Adapter)模式B)合成(Composite)模式C)装饰(Decorator)模式D)桥接(Bridge)模式(11)行为类模式使用()在类间分派行为。A)接口B)继承机制C)对象组合D)委托(12)以下属于行为对象模式的是()A)模板(TemplateMethod)模式B)迭代器(Iterator)模式C)命令(Command)模式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)、接口()原则的核心思想是系统中的每一个对象都应当只有一个单独的职责,而所有对象所关注的就是自身职责的完毕。()原则的核心思想是一个对象对扩展开放,对修改关闭;实现此原则的关键就在于()、分离出()部分和()部分。()原则的核心思想是在任何父类出现的地方都可以用它的子类来替代。()原则的核心思想是要依赖于抽象,而不要依赖于具体的实现。()原则的核心思想是不应当逼迫客户程序依赖于他们不用的方法。即一个接口不需要提供太多的行为,应当只提供一种对外的功能,不应当把所有的操作都封装在一个接口中。()原则的核心思想是一个对象应当对其它对象尽也许少的了解。或者说,只和你的朋友说话。这样一些对象可以看做朋友:当前对象自身、通过方法的参数传递进来的对象、当前对象所创建的对象、当前对象的实例变量所引用的对象和方法内所创建或者实例化的对象。()原则的核心思想是优先使用组合而非继承。设计模式应当面向()编程三、判断题(分值10)单一职责原则表现在面向对象的程序中就是“高内聚、低耦合”。()设计模式只能遵从使用,不能也无需创新。()在面向对象编程时,无论何时何地都要使用GoF所给出的设计模式,这样编写的代码才比较好。()工厂方法可以提高内聚性,松散耦合,并且有助于测试。()对象要么构造其它对象,要么使用其它对象,绝不要两者兼顾。()四、问答题(分值30)单例模式的两种实现方法,并说明优缺陷?什么是对象粒度?MVC模式是个复合模式,请写出你两种你所知道的MVC中使用的模式。举例说明,适配器模式和装配器在JavaIO中的应用。在面向对象程序设计中,经常需要避免过多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)都继承了组件类(Component),分别显示文本和图片内容,现需要构造带有滚动条、或者带有黑色边框、或者既有滚动条又有黑色边框的文本显示控件和图片显示控件,但希望最多只增长三个类,()设计模式可以实现该目的。A.外观B.装饰C.单件D.模板方法5.下面的类图表达的是哪个模式?A.抽象工厂模式(AbstractFactory)B.工厂方法模式(FactoryMethod)C.命令模式(Command)D.责任链模式(ChainofResponsibility)6.下面的类图表达的是哪个设计模式?A.代理模式(Proxy)B.装饰模式(Decorator)C.桥接模式(Bridge)D.观测者模式(Observer)7.下面的类图表达的是哪个模式?A.代理模式(Proxy)B.外观模式(Facade)C.适配器模式(Adapter)D.桥接模式(Bridge)8.下面的类图表白了哪个模式?A.责任链模式(ChainofResponsibility)B.命令模式(Command)C.备忘录模式(Memento)D.工厂方法模式(FactoryMethod)9.下面的类图表达的是哪个设计模式?A.模板方法模式(TemplateMethod)B.命令模式(Command)C.单例模式(Singleton)D.状态模式(State)10.下面的类图表白了哪个模式?A.模板方法模式(TemplateMethod)B.命令模式(Command)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分)简述面向对象程序设计的六大基本原则?(6分)简述什么是单例模式,以及他解决的问题,应用的环境,解决的方案,模式的本质?(8分)为什么面向对象的分析和设计中优先使用组合,而非继承?四、程序阅读题(分值15)在下面的C++代码中,类SalesTicket可以完毕打印票据正文的功能,类HeadDecorator与FootDecorator分别完毕打印票据的台头和脚注的功能。已知该程序运营后的输出结果如下所示。这是票据的台头!这是票据正文!这是票据的脚注!------------------------这是票据的台头!这是票据的脚注![C++程序代码]#include<iostream>usingnamespacestd;classSalesTicket{public:virtualvoidprintTicket(){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:publicDecorator{public:FootDecorator(SalesTicket*t):Decorator(t){}voidprintTicket(){Decorator::printTicket();cout<<"这是票据的脚注!"<<endl;}};voidmain(void){SalesTickett;FootDecoratorf(&t);HeadDecoratorh(&f);h.printTicket();cout<<"------------------------"<<endl;FootDecoratora(NULL);HeadDecoratorb(&a);b.printTicket();}请根据题目描述、程序和输出,阐述采用该设计模式进行设计的优势?五、应用题(分值15)一般的公司采购审批都是分级的,采购量的不同就需要不同层次的主管人员来审批,如主任可以审批1万元以下的采购单,副董事长可以申批2.5万元以下的采购单,董事长可以审批10万元以下的采购单,10万元以上的采购单就需要开会决定。请根据该描述,选择合适的设计模式并给出其类图。模拟试题5一、选择题(分值20)1.以动作和事务闻名,且以对象形式用来封装回滚、日记或者事务功能。这种设计模式是()A.责任链模式B.命令模式C.观测者模式D.策略模式2.以下不属于创建型模式是()PROXY(代理)B.BUILDER(生成器)C.PROTOTYPE原型D.SINGLETON单件3.以下不属于结构型模式是?()COMPOSITE(组合)B.ADAPTER(适配器)C.FLYWEIGHT(享元)D.SINGLETON(单例)以下不属于行为型模式是?()COMMAND(命令)STRATEGY(策略)MEMENTO(备忘录)BRIDGE(桥接)以下意图那个是用来描述BUILDER(生成器)?()定义一个用于创建对象的接口,让子类决定实例化哪一个类将一个复杂对象的构建与它的表达分离,使得同样的构建过程可以创建不同的表达。保证一个类仅有一个实例,并提供一个访问它的全局访问点。运用共享技术有效地支持大量细粒度的对象。以下意图那个是用来描述PROTOTYPE(原型)?()允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。表达一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。C.定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到告知并被自动更新。D.用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。以下意图那个是用来描述ADAPTER(适配器)?()将一个类的接口转换成客户希望的此外一个接口。本模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。B.定义一个用于创建对象的接口,让子类决定实例化哪一个类C.表达一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。D.将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日记,以及支持可撤消的操作。8.以下意图那个是用来描述BRIDGE(桥接)?()A.提供一个创建一系列相关或互相依赖对象的接口,而无需指定它们具体的类。B.将抽象部分与它的实现部分分离,使它们都可以独立地变化。C.将一个复杂对象的构建与它的表达分离,使得同样的构建过程可以创建不同的表达。D.动态地给一个对象添加一些额外的职责。9.以下哪个意图是用来描述COMPOSITE(组合)?()为其他对象提供一种代理以控制对这个对象的访问。运用共享技术有效地支持大量细粒度的对象。将对象组合成树形结构以表达部分-整体的层次结构。将一个复杂对象的构建与它的表达分离,使得同样的构建过程可以创建不同的表达。以下意图那个是用来描述DECORATOR(装饰)?()运用共享技术有效地支持大量细粒度的对象。用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。将抽象部分与它的实现部分分离,使它们都可以独立地变化。动态地给一个对象添加一些额外的职责。以下意图那个是用来描述FACADE(外观)?()A.为子系统中的一组接口提供一个一致的界面,本模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。B.定义一个用于创建对象的接口,让子类决定实例化哪一个类。C.保证一个类仅有一个实例,并提供一个访问它的全局访问点。D.在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。以下意图那个是用来描述FLYWEIGHT(享元)?()A.将抽象部分与它的实现部分分离,使它们都可以独立地变化。B.运用共享技术有效地支持大量细粒度的对象。C.动态地给一个对象添加一些额外的职责。D.用原型实例指定创建对象的种类,并且过拷贝这些原型创建新的对象。以下意图那个是用来描述PROXY(代理)?()用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。运用共享技术有效地支持大量细粒度的对象。C.为其他对象提供一种代理以控制对这个对象的访问。D.将一个复杂对象的构建与它的表达分离,使得同样的构建过程可以创建不同的表达。以下意图那个是用来描述CHAINOFRESPONSIBILITY(职责链)?()为子系统中的一组接口提供一个一致的界面,本模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。B.提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表达。C.在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论