东大-软件设计模式X-B卷_第1页
东大-软件设计模式X-B卷_第2页
东大-软件设计模式X-B卷_第3页
东大-软件设计模式X-B卷_第4页
东大-软件设计模式X-B卷_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

PAGEPAGE7课程名称:软件设计模式X东北大学继续教育学院软件设计模式X试卷(作业考核线上2)B卷(共7页)一、单选题(共40分,每题2分)1.常用的基本设计模式可分为(A)A.创建型、结构型和行为型B.对象型、结构型和行为型C.过程型、结构型和行为型D.抽象型、接口型和实现型2.对以下开闭原则的描述错误的是(A)A.开闭原则与“对可变性的封装原则”没有相似性B.找到个系统的可变元素,将它封装起来,叫开闭原则C.对修改关闭,是其原则之一D.从抽象层导出一个或多个新具体类可以改变系统的行为,是其原则之一3.“不要和陌生人说话”是(D)原则的通俗表述。A.接口隔离B.里氏替换C.依赖倒置D.迪米特4.当创建一个具体的对象而又不希望指定具体的类时,可以使用(D)A.结构型B.创建型C.行为型D.以上都可以5.以下(C)是利用一个对象,快速地生成一批对象。A.抽象工厂(AbstractFactory)模式B.原型(Prototype)模式C.合成(Composite)模式D.桥接(Bridge)模式6.以下(B)用来描述建造者(Builder)。A.定义一个用于创建对象的接口,让子类决定实例化哪一个类B.将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示C.保证一个类仅有一个实例,并提供→个访问它的全周访问点D.运用共享技术有效地支持大量细粒度的对象7.以下(C)用来描述工厂方法(FactoryMethod)模式。A.提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类B.表示一个作用于某对象结构中的各元素的操作。它使用户可以在不改变各元素的类的前提下定义作用于这些元素的新操作C.定义一个用于创建对象的接口,让子类决定实例化哪一个类。该模式使一个类的实例化延迟到其子类D.定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化8.对象适配器模式是(A)原则的典型应用。A.将一个类的接口转换成客户希望的另外一个接口,本模式使原本由于接口不兼容而不能一起工作的那些类可以一起工作。B.定义一个用于创建对象的接口,让子类决定实例化哪一个类C.表示一个作用于某对象结构中的各元素的操作,它使用户可以在不改变各元素的类的前提下定义作用于这些元素的新操作D.将一个请求封装为一个对象,从而使用户可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作9.关于模式适用性,以下(D)不适合使用Flyweight(享元)模式。A.一个应用程序使用了大量的对象B.完全由于使用大量的对象,造成很大的存储开销C.对象的大多数状态都可变为外部状态D.用户想使用一个已经存在的类,而它的接口不符合用户的需求10.下面不属于创建型模式的有(B)。A.抽象工厂模式(AbstractFactory)B.适配器模式(Adapter)C.工厂方法模式(FactoryMethod)D.单例模式(Singleton)11.定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。这句话是对哪种模式的描述(D)。A.观察者模式(Observer)B.桥接模式(Bridge)C.适配器模式(Adapter)D.策略模式(Strategy)12.若系统中的某子模块需要为其他模块(B)提供访问不同数据库系统的功能,这些数据库系统提供的访问接口有一定的差异,但访问过程却都是相同的,例如,先连接数据库,在打开数据库,最后对数据库进行查询,设计模式可抽象出相同的数据库访问过程。A.外观B.装饰C.单间D.模板方法13.Decorator(装饰)模式的意图是:(B)。A.定义一系列的算法,把它们一个个的封装起来,并且使它们可相互替换。B.为一个对象动态连接附加的职责。C.你希望只拥有一个对象,但不用全局对象来控制对象的实例化。D.在对象之间定义一种一对多的依赖关系,这样当一个对象的状态改变时,所有依赖于它的对象都将得到通知并自动更新。14.Singleton模式适用于(B)。A.当类有多个实例而且客户可以从一个众所周知访问点访问它时。B.当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。C.当构造过程必须允许被构造的对象有不同的表示时。D.生成一批对象时。15.下列模式中,属于行为模式的是(C)。A.工厂模式B.适配器C.观察者D.以上都是16.关于工厂方法,以下叙述不正确的是(C)。A.FactoryMethod是一个用于帮助分配创建的责任的模式。B.FactoryMethod模式和AbstractFactory模式总是配合使用。C.FactoryMethod适用于将对象实例化的规则推迟到某个派生类的情形。D.FactoryMethod是属于创建型模式。17.以下意图(B)可用来描述解释器(Interpreter)。A.将抽象部分与它的实现部分分离,使它们都可以独立变化B.给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子C.将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示D.为其他对象提供一种代理以控制对这个对象的访问18.在观察者模式中,表述错误的是(C)。A.人观察者角色的更新是被动的B.被观察者可以通知观察者进行更新C.观察者可以改变被观察者的状态,再由被观察者通知所有观祟者依据被观察者的状态挂行D.以上表述全部错误19.以下意图(C)是用来描述组合(Composite)。A.为其他对象提供一种代理以控制对这个对象的访问B.运用共享技术有效地支持大量细粒度的对象C.将对象组合成树形结构以表示“部分”整体”的层次结构D.将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示20.设计模式具有的优点(A)。A.适应需求变化B.程序易于理解C.减少开发过程中的代码开发工作量D.简化软件系统的设计二、多选题(共10分,每题2分)1.以下是模式的基本要素的是(ABCD)。A.名称B.意图C.解决方案D.参与者和协作者2.当应用工厂方法(FactoryMethod)模式时要考虑(ABCD)。A.主要有两种不同的情况B.参数化工厂方法C.特定语言的变化和问题D.使用模板以避免创建子类3.以下属于结构型模式的是(AB)。A.代理(Proxy)模式B.合成(Composite)模式C.命令(Command)模式D.观察者(Observer)模式4.装饰(Decorator)模式的两个主要缺点是(CD)。A.比静态继承更灵活B.避免在层次结构高层的类有太多的特征C.有许多小对象,很容易对它们进行定制,但是很难学习这些系统,排错也很困难D.装饰与它的组成不一样,装饰是一个透明的包装5.中介者模式有以下(ABD)优点。A.简化了对象之间的交互B.简化了同事类的设计和实现C.封装了转换规则D.减少了子类生成三、判断题(共10分,每题1分;请在认为正确的题目后面写T,错误的题目后面写F)1.设计模式的两大主题是系统复用与系统扩展。(T)2.抽象工厂模式提供了一系列相关或相互依赖对象的接口且必须指定他们具体的类。(F)3.对象适配器模式是依赖倒转原则的典型应用。(F)4.Open-Close原则的含义是一个软件实体应当对扩展开放,对修改关闭。(T)5.Singleton(单例)模式属于结构性模式。(F)6.常用的设计模式可分为过程型、创建型和结构型。(F)7.对观察者模式,触发事件的对象——Subject对象不需要知道观察事件的所有对象。(T)8.通过在问题领域中使用模式,可以用一种不同的方式来看待问题。(T)9.Strategy模式可以用不同的方式调用所有的算法。(F)10.当依赖关系固定(或几乎固定)时,加入一个Observer(观察者)模式可能只会增加复杂性。(T)四、名词解释(共15分,每题3分)1.设计模式答:是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。2.开闭原则答:一个软件实体应当对扩展开放,对修改关闭,即在不修改源代码的基础上扩展一个系统的行为。3.单一职责原则答:一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。4.依赖关系答:依赖关系是一种使用关系,它是对象之间相合度最弱的一种关联方式,是临时性的关联。5.组合关系答:组合关系也是关联关系的一种,也表示类之间的整体与部分的关系,但它是一种更强烈的聚合关系,是contains-a关系。在组合关系中,整体对象可以控制部分对象的生命周期,一旦整体对象不存在,部分对象也将不存在,部分对象不能脱离整体对象而存在。五、简答题(共15分,每题5分)1.设计模式一般有哪几个基本要素?设计模式一般有如下几个基本要素:模式名称、问题、目的、解决方案、效果、实例代码和相关设计模式,其中的关键元素包括模式名称、问题、解决方案和效果。2.创建型模式分包括哪几种设计模式,各是什么并简要说明。⑴单例(Singleton)模式:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。⑵原型(Prototype)模式:将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的新实例。⑶工厂方法(FactoryMethod)模式:定义一个用于创建产品的接口,由子类决定生产什么产品。⑷抽象工厂(AbstractFactory)模式:提供一个创建产品族的接口,其每个子类可以生产一系列相关的产品。⑸建造者(Builder)模式:将一个复杂对象分解成多个相对简单的部分,然后根据不同需要分别创建它们,最后构建成该复杂对象。说明访问者模式的定义与主要优缺点。定义:封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。优点:1.扩展性好。在不修改对象结构中的元素的情况下,为对象结构中的元素添加新的功能。2.复用性好。通过访问者来定义整个对象结构通用的功能,从而提高复用程度。3.分离无关行为。通过访问者来分离无关的行为,把相关的行为封装在一起,构成一个访问者,这样每一个访问者的功能都比较单一。缺点:1.对象结构变化很困难。在访问者模式中,每增加一个新的元素类,都要在每一个具体访问者类中增加相应的具体操作,这违背了“开闭原则”。2.违反了依赖倒置原则。访问者模式依赖了具体类,而没有依赖抽象类。六、综合题(共10分)当“人民币汇率”升值时,进口公司的进口产品成本降低且利润率提升,出口公司的出口产品收入降低且利润率降低;当“人民币汇率”贬值时,进口公司的进口产品成本提升且利润率降低,出口公司的出口产品收入提升且利润率提升。利用观察者模式设计一个程序,分析“人民币汇率”的升值或贬值对进口公司的进口产品成本或出口公司的出口产品收入以及公司的利润率的影响。提示:这里的汇率(Rate)类是抽象目标类,它包含了保存观察者(Company)的List和增加/删除观察者的方法,以及有关汇率改变的抽象方法change(intnumber);而人民币汇率(RMBrate)类是具体目标,它实现了父类的change(intnumber)方法,即当人民币汇率发生改变时通过相关公司;公司(Company)类是抽象观察者,它定义了一个有关汇率反应的抽象方法respons巳(intnumber);进口公司(ImportCompany)类和出口公司(ExportCompany)类是具体观察者类,它们实现了父类的response(intnumber)方法,即当它们接收到汇率发生改变的通知时作为相应的反应。请画出该程序的类图。订阅者及具体订阅者packageobserver;/***抽象观察者:公司*@authorchenzufeng*@date2021-2-8*/publicinterfaceCompany{/***对汇率的反应*@paramnumber汇率*/voidresponse(intnumber);}出口公司:packageobserver;publicclassExportCompanyimplementsCompany{@Overridepublicvoidresponse(intnumber){if(number>0){System.out.println("人民币汇率升值"+number+"个基点,降低了出口产品收入,降低了出口公司的销售利润率。");}elseif(number<0){System.out.println("人民币汇率贬值"+(-number)+"个基点,提升了出口产品收入,提升了出口公司的销售利润率。");}}}进口公司:packageobserver;publicclassImportCompanyimplementsCompany{@Overridepublicvoidresponse(intnumber){if(number>0){System.out.println("人民币汇率升值"+number+"个基点,降低了进口产品成本,提升了进口公司利润率。");}elseif(number<0){System.out.println("人民币汇率贬值"+(-number)+"个基点,提升了进口产品成本,降低了进口公司利润率。");}}}发布者packageobserver;importjava.util.ArrayList;importjava.util.List;/***抽象目标:汇率*/abstractclassRate{protectedList<Company>companyList=newArrayList<>();/***增加观察者*@paramcompany公司*/publicvoidaddCompany(Companycompany){companyList.add(company);}/***删除观察者*@paramcompany公司*/

温馨提示

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

评论

0/150

提交评论