[14-15(2)]12(1)班《Java设计模式》期末A卷(答案)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《Java设计模式》期末考试试卷(A卷)第1页共9页2014-2015学年第二学期信息科学与工程学院《Java设计模式》期末考试试卷(A卷)年级:12专业:计算机科学技术班级:学号:姓名:题号一二三四五总分签名得分注:1、共120分钟,总分100分;2、此试卷适用班级:计算机本科专业。一得分阅卷教师一、单选择题:(30分,每小题2分)1.关于模式适用性,在以下情况适合使用COMPOSITE(组合)模式?(C)A.你想使用一个已经存在的类,而它的接口不符合你的需求。B.当一个类的实例只能有几个不同状态组合中的一种时。C.你想表示对象的部分-整体层次结构。D.一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。2.Java的异常处理机制可理解为哪一种行为模式(C)A.观察者(Observer)模式B.迭代器(Iterator)模式C.职责链(ChainofResponsibility)模式D.策略(Strategy)模式3.当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用(B)模式。A.结构型B.创建型C.行为型D.以上都可以4.以下意图哪个是用来描述BUILDER(建造者)?(B)A.定义一个用于创建对象的接口,让子类决定实例化哪一个类B.将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不——————————————装————————————————订————————————————线—————————————————《Java设计模式》期末考试试卷(A卷)第2页共9页同的表示。C.保证一个类仅有一个实例,并提供一个访问它的全局访问点。D.运用共享技术有效地支持大量细粒度的对象。5.设计模式的两大主题是(D)A.系统的维护与开发B.对象组合与类的继承C.系统架构与系统开发D.系统复用与系统扩展6.要依赖于抽象,不要依赖于具体,即针对接口编程,不要针对实现编程,是(D)的表述。A.开-闭原则B.接口隔离原则C.里氏代换原则D.依赖倒转原则7.以下意图哪个是用来描述BRIDGE(桥接)?(B)A.提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。B.将抽象部分与它的实现部分分离,使它们都可以独立地变化。C.将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。D.动态地给一个对象添加一些额外的职责。8.以下意图哪个是用来描述ABSTRACTFACTORY(抽象工厂)?(A)A.提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。B.定义一个用于创建对象的接口,让子类决定实例化哪一个类。C.将一个类的接口转换成客户希望的另外一个接口。D.表示一个作用于某对象结构中的各元素的操作。9.Open-Close原则的含义是一个软件实体(A)A.应当对扩展开放,对修改关闭.B.应当对修改开放,对扩展关闭C.应当对继承开放,对修改关闭D.以上都不对10.对于违反里式代换原则的两个类,可以采用的候选解决方案错误的是:(D)A.创建一个新的抽象类C,作为两个具体类的超类,将A和B共同的行为移动到C中,从而解决A和B行为不完全一致的问题。B.将B到A的继承关系改组成委派关系。C.区分是“IS-a”还是”Has-a”。如果是“Is-a”,可以使用继承关系,如果是”Has《Java设计模式》期末考试试卷(A卷)第3页共9页-a”应该改成委派关系D.以上方案错误11.以下意图那个是用来描述ADAPTER(适配器)?(A)A.将一个类的接口转换成客户希望的另外一个接口,本模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。B.定义一个用于创建对象的接口,让子类决定实例化哪一个类。C.表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。D.将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。12.对于依赖倒转的表述错误的是(E)A.依赖于抽象而不依赖于具体,也就是针对接口编程。B.依赖倒转的接口并非语法意义上的接口,而是,一个类对其他对象进行调用时,所知道的方法集合。C.从选项B的角度论述,一个对象可以有多个接口。D.实现了同一接口的对象,可以在运行期间,顺利地进行替换。而且不必知道所示用的对象是哪个实现类的实例。E.此题没有正确答案。13.以下关于创建型模式说法正确的是(A)A.创建型模式关注的是对象的创建B.创建型模式关注的是功能的实现C.创建型模式关注的是组织类和对象的常用方法D.创建型模式关注的是对象间的协作14.关于模式适用性,在以下情况不适合使用FLYWEIGHT(享元)模式?(D)A.一个应用程序使用了大量的对象。B.完全由于使用大量的对象,造成很大的存储开销。C.对象的大多数状态都可变为外部状态。D.你想使用一个已经存在的类,而它的接口不符合你的需求。15.对象适配器模式是(A)原则的典型应用。A.合成聚合复用原则B.里式代换原则C.依赖倒转原则D.迪米特法则——————————————装————————————————订————————————————线—————————————————《Java设计模式》期末考试试卷(A卷)第4页共9页二得分阅卷教师二、多选择题:(20分,每小题2分)1.面向对象系统中功能复用的最常用技术是(A、B)A.类继承B.对象组合C.使用抽象类D.使用实现类2.以下哪些问题通过应用设计模式能够解决(A、D)。A.指定对象的接口B.排除软件BUGC.确定软件的功能都正确实现D.设计应支持变化3.Bridge模式有以下哪些优点?(A、B、D)A.分离接口及其实现部分B.提高可扩充性C.改变值以指定新对象D.实现细节对客户透明4.以下关于结构型模式说法正确的是(A、C、D)A.结构型模式可以在不破坏类封装性的基础上,实现新的功能。B.结构型模式主要用于创建一组对象。C.结构型模式可以创建一组类的统一访问接口。D.结构型模式可以在不破坏类封装性的基础上,使得类可以同不曾估计到的系统进行交互。5.在不破坏类封装性的基础上,使得类可以同不曾估计到的系统进行交互。主要体现在(A,D)A.适配器(Adapte)模式B.合成(Composite)模式C.原型(Prototype)模式D.桥接(Bridge)模式6.以下意图哪个是用来描述FACTORYMETHOD(工厂方法)?(C)A.提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。B.表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。C.定义一个用于创建对象的接口,让子类决定实例化哪一个类。该模式使一个类的实例化延迟到其子类。D.定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。《Java设计模式》期末考试试卷(A卷)第5页共9页7.使用Prototype原型模式时以下属于要考虑的问题有那些?(A、B、C)A.使用一个原型管理器B.实现克隆操作C.初始化克隆对象D.用类动态配置应用8.Singleton模式适用与(A、B)A.当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。B.当这个唯一实例应该自行创建并向系统提供时。C.当构造过程必须允许被构造的对象有不同的表示时。D.生成一批对象。9.当应用FactoryMethod模式时要考虑下面哪些问题?(A,B,C,D)A.主要有两种不同的情况B.参数化工厂方法C.特定语言的变化和问题D.使用模板以避免创建子类10.以下有关ABSTRACTFACTORY(抽象工厂)这种模式的一些优点和缺点描述正确的是?(A、B、C、D)A.它分离了具体的类。B.它使得易于交换产品系列。C.它有利于产品的一致性。D.难以支持新种类的产品三得分阅卷教师三、填空题:(20分,每空2分)1.(行为型模式)主要用于描述对类或对象怎样交互和怎样分配职责。2.组合模式属于(结构型)模式、原型模式属于(创建型)模式。3.适配器模式,分为类适配器和对象适配器两种实现。其中类适配器采用的是(继承)关系,而对象适配器采用的是(组合聚合)关系。4.(依赖倒转)原则要求抽象不应该依赖于细节,细节应当依赖于抽象。5.门面模式是(迪米特)法则的典型运用。6.创建型模式的根本意图是要把(对象的创建)和(使用)的责任进行分离,从而降低系统的(耦合度)。四得分阅卷教师四、程序分析题:(10分)厨具工厂WareFactory能生产和管理饭碗bowl和杯子cup等厨具——————————————装————————————————订————————————————线—————————————————《Java设计模式》期末考试试卷(A卷)第6页共9页KitchenWare,现已画好了以下类图,按要求完成以下任务。要求:1)说明选择了什么设计模式?//完成该步得3分2)写出其程序代码。//完成该步得7分解:1)本题使用了享元模式。2)其参考程序代码如下所示:importjava.util.*;publicclassWareFactory{privateArrayListWares=newArrayList();privateinttotalNum=0;publicWareFactory(){KitchenWarend1=newbowl(饭碗);Wares.add(nd1);KitchenWarend2=newcup(杯子);Wares.add(nd2);}publicKitchenWaregetKitchenWare(Stringtype){if(type.equalsIgnoreCase(饭碗)){totalNum++;return(KitchenWare)Wares.get(0);}elseif(type.equalsIgnoreCase(杯子))《Java设计模式》期末考试试卷(A卷)第7页共9页{totalNum++;return(KitchenWare)Wares.get(1);}else{returnnull;}}publicintgetTotalWare(){returnWares.size();}publicintgettotalNum(){returntotalNum;}}publicinterfaceKitchenWare{publicStringgetType();publicvoiduse();}publicclassbowlimplementsKitchenWare{privateStringtype;publicbowl(Stringtype){this.type=type;}publicStringgetType(){returnthis.type;}publicvoiduse(){System.out.println(使用的厨具是:+this.type);}}publicclasscupimplementsKitchenWare{privateStringtype;publiccup(Stringtype){this.type=type;}publicStringgetType(){returnthis.type;}publicvoiduse(){System.out.println(使用的厨具是:+this.type);}}publicclassClient2010{publicstaticvoidmain(String[]args){KitchenWarekw1,kw2,kw3,kw4;WareFactorydf=newWareFactory();kw1=df.getKitchenWare(饭碗);kw1.use();kw2=df.getKitchenWare(饭碗);kw2.use();kw3=df.getKitchenWare(杯子);kw3.use();kw4=df.getKi

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功