设计模式试卷

合集下载

设计模式期末考试题及答案

设计模式期末考试题及答案

设计模式期末考试题及答案# 设计模式期末考试题及答案一、选择题(每题2分,共20分)1. 下列哪个不是设计模式的分类?A. 创建型模式B. 结构型模式C. 行为型模式D. 功能型模式答案:D2. 单例模式属于哪种类型的设计模式?A. 创建型模式B. 结构型模式C. 行为型模式D. 并发型模式答案:A3. 装饰者模式主要用于解决什么问题?A. 对类的功能进行扩展B. 将对象组合成树形结构C. 将一个类的对象包装成另一个新类的对象D. 将类接口的实现部分委托给其他对象答案:A4. 观察者模式中,当被观察对象状态发生变化时,它将通知所有的什么?A. 观察者B. 参与者C. 订阅者D. 监听者答案:A5. 策略模式的意图是?A. 定义一系列的算法,把它们一个个封装起来,并使它们可互换B. 确保一个对象的引用在多个线程间是安全的C. 允许用户对某个对象的内部状态进行访问,而不允许修改D. 允许多个客户端通过一个共同的接口与一个对象交互,而这个对象却能在运行时切换其行为答案:A...(此处省略其他选择题)二、简答题(每题10分,共30分)1. 解释什么是工厂方法模式,并给出一个实际应用的例子。

答案:工厂方法模式是一种创建型设计模式,它定义了一个创建对象的接口,但让子类决定实例化哪一个类。

工厂方法让类的实例化推迟到子类中进行。

例如,在图形界面编程中,一个工厂类可以负责创建不同类型的按钮,如按钮工厂方法可以返回一个“圆形按钮”或“方形按钮”的实例。

2. 描述适配器模式的工作原理,并解释它在软件开发中的应用。

答案:适配器模式是一种结构型模式,它允许不兼容的接口之间进行通信。

它通过一个适配器类将一个类的接口转换成客户端期望的另一个接口。

在软件开发中,适配器模式常用于实现第三方库或遗留系统的接口,使得它们能够与现有的系统兼容。

3. 解释观察者模式的工作原理,并举例说明其在实际开发中的应用。

答案:观察者模式是一种行为型模式,它定义了对象间的一种一对多的依赖关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。

软件设计模式与应用实例考核试卷

软件设计模式与应用实例考核试卷
B.容器类
C.叶节点类
D.组合类
18.以下哪个模式用于封装一系列的行为,并将每一个行为封装为一个对象?()
A.策略模式
B.模板方法模式
C.状态模式
D.职责链模式
19.在中介者模式中,以下哪个角色负责定义与各个同事类相互作用的接口?()
A.中介者
B.同事类
C.客户端
D.抽象中介者
20.以下哪种模式主要用于在系统中分离抽象和实现部分?()
10. ______模式通过定义一个中介对象来简化原有对象之间的交互关系。
四、判断题(本题共10小题,每题1分,共10分,正确的请在答题括号中画√,错误的画×)
1.设计模式是为了解决软件设计中的特定问题而提出的一系列解决方案。()
2.单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点。()
A.抽象工厂
B.具体工厂
C.抽象产品
D.具体产品
8.以下哪种情况适合使用策略模式?()
A.算法的稳定不变
B.多个类只区别在表现行为不同
C.需要控制对象的创建
D.需要简化对象的组合
9.适配器模式的目的是()
A.将一个接口转换成客户希望的另一个接口
B.封装多个对象为一个对象
C.定义一个操作中的算法的骨架
3.装饰器模式在不改变接口的前提下,动态地给一个对象添加一些额外的职责。与代理模式区别在于,代理模式控制对对象的访问,装饰器模式则是添加职责。
4.命令模式将请求封装成对象,实现请求的发送者和接收者解耦。优点:易于扩展新命令,可以组合命令,支持撤销操作等。在图形编辑软件中,每个图形操作可对应一个命令对象。
A.命令模式
B.观察者模式
C.职责链模式

设计模式的题库【精选】

设计模式的题库【精选】

1.设计模式的原理? (C)A. 面对实现编程B. 面向对象编程C. 面向接口编程D. 面向组合编程2. 以下对"开-闭"原则的一些描述错误的是?(A)A. "开-闭"原则与"对可变性的封装原则"没有相似性.B. 找到一个系统的可变元素,将它封装起来,叫"开-闭"原则C. 对修改关闭: 是其原则之一D. 从抽象层导出一个或多个新的具体类可以改变系统的行为,是其原则之一3.以下不属于创建型模式是? (A)A.PROXY(代理)B.BUILDER(生成器)C. PROTOTYPE(原型)D.SINGLETON(单件)4.以下不属于结构型模式是? (D)A. COMPOSITE(组合)B. ADAPTER(适配器)C. FLYWEIGHT(享元)D. SINGLETON(单例)5.以下不属于行为型模式是? (D )A. COMMAND(命令)B. STRATEGY(策略)C. MEMENTO(备忘录)D. BRIDGE(桥接)/*23模式意图*/6.以下意图那个是用来描述ABSTRACT FACTORY(抽象工厂)?(A)A.提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

B.定义一个用于创建对象的接口,让子类决定实例化哪一个类。

C.将一个类的接口转换成客户希望的另外一个接口。

D.表示一个作用于某对象结构中的各元素的操作。

7.以下意图那个是用来描述BUILDER(生成器)?(B)A.定义一个用于创建对象的接口,让子类决定实例化哪一个类B.将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

C.保证一个类仅有一个实例,并提供一个访问它的全局访问点。

D.运用共享技术有效地支持大量细粒度的对象。

8.以下意图那个是用来描述FACTORY METHOD(工厂方法)?(C)A.提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

设计模式习题及参考答案

设计模式习题及参考答案

《设计模式》复习题一、单选题1.不同级别的用户对同一对象拥有不同的访问权利或某个客户端不能直接操作到某个对象,但又必须和那个对象有所互动,这种情况最好使用什么设计模式( )A. Bridge模式B. Facade模式C. Adapter模式D. Proxy模式2.模式常用的基本设计模式可分为( )A.创建型、结构型和行为型B.对象型、结构型和行为型C.过程型、结构型和行为型D.抽象型、接口型和实现型3.以下哪个模式是利用一个对象,快速地生成一批对象( )A. 抽象工厂(Abstract Factory)模式B. 合成(Composite)模式C. 原型(Prototype)模式D. 桥接(Bridge)模式4.以下不属于结构型模式是( )A. COMPOSITE(组合)B. ADAPTER(适配器)C. FLYWEIGHT(享元)D. SINGLETON(单例)5.以下意图那个是用来描述ABSTRACT FACTORY(抽象工厂)模式( ) 。

A.提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

B.定义一个用于创建对象的接口,让子类决定实例化哪一个类。

C.将一个类的接口转换成客户希望的另外一个接口。

D.表示一个作用于某对象结构中的各元素的操作。

6.设计模式的两大主题是( )A.系统的维护与开发 B 对象组合与类的继承C.系统架构与系统开发D.系统复用与系统扩展7.外观模式的作用是()A.当不能采用生成子类的方法进行扩充时,动态地给一个对象添加一些额外的功能。

B.为了系统中的一组功能调用提供一个一致的接口,这个接口使得这一子系统更加容易使用。

C.保证一个类仅有一个实例,并提供一个访问他的全局访问点。

D.在方法中定义算法的框架,而将算法中的一些操作步骤延迟到子类中实现某软件公司欲设计一款图像处理软件,帮助用户对拍摄的照片进行后期处理。

在软件需求分析阶段,公司的系统分析师识别出了如下3个关键需求:图像处理软件需要记录用户在处理照片时所有动作,并能够支持用户动作的撤销与重做等行为。

设计模式面试题目(3篇)

设计模式面试题目(3篇)

第1篇一、设计模式概述1. 什么是设计模式?设计模式是一套被反复使用、多数人知晓、经过分类编目的、代码设计经验的总结。

使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。

2. 设计模式的作用?(1)提高代码可重用性;(2)提高代码可维护性;(3)提高代码可读性;(4)保证代码可靠性;(5)降低系统复杂性。

3. 设计模式的分类?(1)创建型模式:创建对象实例的方法;(2)结构型模式:处理类和对象之间的关系;(3)行为型模式:处理对象之间的通信。

二、创建型模式1. 单例模式(Singleton)单例模式确保一个类只有一个实例,并提供一个全局访问点。

(1)单例模式的作用:- 避免创建多个实例,节省资源;- 保证全局访问点唯一。

(2)单例模式的实现方式:- 懒汉式:在需要时创建实例;- 饿汉式:在类加载时创建实例;- 双重校验锁:懒汉式,线程安全;- 静态内部类:懒汉式,线程安全。

2. 工厂方法模式(Factory Method)工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。

(1)工厂方法模式的作用:- 隐藏创建对象的过程;- 提供接口,让子类实现具体创建逻辑。

(2)工厂方法模式的实现方式:- 简单工厂模式:通过一个工厂类来创建对象;- 工厂方法模式:通过一个工厂接口和实现类来创建对象。

3. 抽象工厂模式(Abstract Factory)抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族。

(1)抽象工厂模式的作用:- 创建对象家族,而不需要指定具体类;- 提供一个接口,让子类实现具体创建逻辑。

(2)抽象工厂模式的实现方式:- 抽象工厂:提供一个接口,让子类实现具体创建逻辑;- 具体工厂:实现抽象工厂接口,创建对象家族。

4. 建造者模式(Builder)建造者模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

(1)建造者模式的作用:- 将一个复杂对象的构建与表示分离;- 提供一个接口,让子类实现具体构建逻辑。

设计模式试卷

设计模式试卷

设计模式期中考试试题一:单项选择(共20道,每道2分)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 它属于GoF23种设计模式B 它是最简单的设计模式之一C 它是学习其他创建型模式的基础D 它只需要记住一个简单的参数即可获得所需对象的实例E 它类中的方法通常为静态方法F 它返回的类都有一个公共的父类和公共的方法10、对象适配器模式是()原则的典型应用。

A.合成聚合复用原则B.里式代换原则C.依赖倒转原则D.迪米特法则 D.以上表述全部错误。

11.对于依赖倒转的表述错误的是()A.依赖于抽象而不依赖于具体,也就是针对接口编程。

B.依赖倒转的接口并非语法意义上的接口,而是,一个类对其他对象进行调用时,所知道的方法集合。

C.从选项B的角度论述,一个对象可以有多个接口。

D.实现了同一接口的对象,可以在运行期间,顺利地进行替换。

设计模式总复习题

设计模式总复习题

总复习题复习参考资料:1.GoF 设计模式2.设计模式解析3.易学设计模式4.大话设计模式5.深入浅出设计模式以参考资料为主,模拟试题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.接口是可以在整个模型中反复使用的一组行为,是一个没有而只有的类。

设计模式期末考试复习

设计模式期末考试复习

《软件建模》考试试题举例一、判断题1.单例类易扩展、易复用。

(错)2.装饰模式能够动态地为一个对象增加新的职责。

(对)二、单项选择题1.简单工厂模式的优点不包括( D )。

A. 它提供了专门的工厂类用于创建对象,实现了对责任的分割。

B. 客户无须知道所创建的具体产品类的类名。

C. 客户可以免除直接创建产品对象的责任,而仅仅“消费”产品。

D. 工厂角色可以通过继承而得以复用。

三、设计词汇与概念配对题下面列出了5个设计词汇,请从后面的9段叙述中选择最贴切的一个叙述,将其编号填入对应词汇后面的括号中。

1.单一职责(A)2.依赖倒置( D )A. 就一个类而言,应该仅有一个引起它变化的原因。

(单一职责原则)B. 一个软件实体应当对扩展开放,对修改关闭。

(开闭原则)C. 所有引用基类(父类)的地方必须能透明地使用其子类的对象。

(里氏代换原则)D. 要针对接口或抽象类编程,而不是针对具体类编程。

(依赖倒置原则)E. 一个软件实体应当尽可能少的与其他实体发生相互作用。

(迪米特法则)四、软件建模题1.下图是一间教室的状态转换图,请将图中()处的内容补充完整。

2.请回答以下关于装饰模式的问题。

(1)下图是装饰模式的设计类图,请补充完整。

(2)装饰模式中包含哪四种角色?相互之间如何协作?抽象构件(Component)具体构件(ConcreteComponent)抽象装饰类(Decorate)具体装饰类(ConcreteDecorate)(3)装饰模式能解决哪一类软件设计问题?在不影响其他对象的情况下,以动态、透明的方式给一个对象增加额外职责,与继承相比更加灵活,并且能够处理那些可以撤销的职责五、综合应用题1. 咖啡店为了进一步满足顾客的口味,允许顾客可以在普通咖啡中自由地加入多种配料(包括加糖、加奶、加冰等)。

咖啡店规定:普通咖啡5元一杯,加糖多收1元,加奶多收2元,加冰多收1元。

使用装饰模式设计的类图如下所示:(1)若ICoffee接口与Coffee类定义如下,请编写出CoffeeDecorator类的完整代码。

设计模式题库以及答案

设计模式题库以及答案

一、选择题(20分,20个)二、简答题(30分,6个)1、框架的定义是框架就是一组相互协作的类,对于特定的一类软件,框架构成了一种可重用的设计。

2、架构是一个软件系统从整体到部分的最高层次的划分。

架构包括架构元件(Architecture Component)、联结器(Connector)、任务流(Task-flow)3、架构的目标:可靠性、安全性、可拓展性、可定制化、可维护性、客户体验、市场时机4、架构分成三种:逻辑架构、物理架构、系统架构5、架构的两要素:元件划分、设计决定6、设计模式是一系列在实践中总结出来的可复用的面向对象的软件设计方法7、划分三种不同层次的模式:架构模式(Architectural Pattern)、设计模式(Design Pattern)、成例(Idiom)。

成例有时称为代码模式(Coding Pattern)。

8、创建型设计模式,如工厂方法(Factory Method)模式、抽象工厂(Abstract Factory)模式、原型(Prototype)模式、单例(Singleton)模式,建造(Builder)模式9、结构型设计模式,如合成(Composite)模式、装饰(Decorator)模式、代理(Proxy)模式、享元(Flyweight)模式、门面(Facade)模式、桥梁(Bridge)模式10、架构模式描述软件系统里的基本的结构组织或纲要11、常见的架构模式:分层模式、黑板模式、中介模式、分散过程模式、微核模式12、框架与架构之间的关系:架构确定了系统整体结构、层次划分,不同部分之间的协作等设计考虑。

框架比架构更具体。

更偏重于技术涉嫌。

确定框架后,软件体系结构也随之确定,而对于同一软件体系结构(比如Web开发中的MVC),可以通过多种框架来实现13、框架与设计模式之间的关系:设计模式研究的是一个设计问题的解决方法,一个模式可应用于不同的框架和被不同的语言所实现;而框架则是一个应用的体系结构,是一种或多种设计模式和代码的混合体虽然它们有所不同,但却共同致力于使人们的设计可以被重用,在思想上存在着统一性的特点,因而设计模式的思想可以在框架设计中进行应用14、框架和设计模式存在着显著的区别:应用领域(前者单一解决方案可在不同框架上用)、内容(模式单纯设计、框架式设计与代码的混合体)15、设计模式比框架更容易移植16、类之间的关系:关联(自身关联、单向、双向实线箭头)、聚合(空心箭头)/组合<包容>(实心箭头)、依赖(虚线箭头)、泛华(继承,实线三角形)、实现(虚线三角形)17、基本元素符:类、包、接口18、开闭(OCP)原则:一个软件实体应当对扩展开放,对修改关闭。

设计模式题库(修改后)

设计模式题库(修改后)

设计模式题库(修改后)1.设计模式的原理? (C)C. 面向接口编程2. 以下对"开-闭"原则的一些描述错误的是?(A)A. "开-闭"原则与"对可变性的封装原则"没有相似性.3.以下属于创建型模式是? (A)B.BUILDER(生成器)C. PROTOTYPE(原型)D.SINGLETON(单件)4.以下属于结构型模式是? (D)COMPOSITE(组合) B. ADAPTER(适配器)B.FLYWEIGHT(享元)5.以下属于行为型模式是? (D )6. COMMAND(命令)7. STRATEGY(策略)8. MEMENTO(备忘录)/*23模式意图*/6.以下意图那个是用来描述ABSTRACT FACTORY(抽象工厂)?(A)A.提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

7.以下意图那个是用来描述BUILDER(生成器)?(B)将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

8.以下意图那个是用来描述FACTORY METHOD(工厂方法)?(C)C.定义一个用于创建对象的接口,让子类决定实例化哪一个类。

该模式使一个类的实例化延迟到其子类。

9.以下意图那个是用来描述PROTOTYPE(原型)?(D)D.用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

10.以下意图那个是用来描述SINGLETON(单件)?(B)B.保证一个类仅有一个实例,并提供一个访问它的全局访问点。

11.以下意图那个是用来描述ADAPTER(适配器)?(A)A.将一个类的接口转换成客户希望的另外一个接口。

本模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

12.以下意图那个是用来描述BRIDGE(桥接)?(B)B.将抽象部分与它的实现部分分离,使它们都可以独立地变化。

13.以下意图那个是用来描述COMPOSITE(组合)?(C)C.将对象组合成树形结构以表示“部分-整体”的层次结构。

设计模式试题(仅供参考)

设计模式试题(仅供参考)

1、设计模式一般用来解决什么样的问题( a)A.同一问题的不同表相 B不同问题的同一表相C.不同问题的不同表相D.以上都不是2、下列属于面向对象基本原则的是( c )A.继承B.封装C.里氏代换 D都不是3、Open-Close原则的含义是一个软件实体( a )A.应当对扩展开放,对修改关闭.B.应当对修改开放,对扩展关闭C.应当对继承开放,对修改关闭D.以上都不对4、当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用( a )模式。

A.创建型B.结构型 C行为型 D.以上都可以5、要依赖于抽象,不要依赖于具体。

即针对接口编程,不要针对实现编程,是( d )的表述A.开-闭原则B.接口隔离原则C.里氏代换原则D.依赖倒转原则6、依据设计模式思想,程序开发中应优先使用的是( a )关系实现复用。

A, 委派 B.继承 C创建 D.以上都不对复用方式:继承和组合聚合(组合委派)7、设计模式的两大主题是( d )A.系统的维护与开发 B 对象组合与类的继承C.系统架构与系统开发D.系统复用与系统扩展8、单例模式中,两个基本要点( a b )和单子类自己提供单例A .构造函数私有 B.唯一实例C.静态工厂方法D.以上都不对9、下列模式中,属于行为模式的是( b )A.工厂模式 B观察者 C适配器以上都是10、“不要和陌生人说话” 是( d )原则的通俗表述A.接口隔离B.里氏代换C.依赖倒转D.迪米特:一个对象应对其他对象尽可能少的了解11、构造者的的退化模式是通过合并( c )角色完成退化的。

A.抽象产品 B产品 C创建者 D使用者12、单子(单例,单态)模式类图结构如下:下列论述中,关于”0..1”表述的不正确的是( d )A.1表示,一个单例类中,最多可以有一个实例.B.”0..1”表示单例类中有不多于一个的实例C.0表示单例类中可以没有任何实例D.0表示单例类可以提供其他非自身的实例13、对象适配器模式是( a )原则的典型应用。

软件架构与设计模式考核试卷

软件架构与设计模式考核试卷
13.在软件架构中,事件驱动架构的主要优点是什么?()
A.提高系统的响应速度
B.降低系统间的耦合度
C.提高系统的可维护性
D.简化系统设计
14.以下哪个模式不属于设计模式中的策略模式?()
A.简单策略模式
B.状态策略模式
C.算法策略模式
D.行为策略模式
15.在软件架构中,RESTful架构风格的特点是什么?()
4.单例模式是唯一的一种创建型设计模式。()
5.软件架构的关注点是如何将系统的不同部分组合在一起,而不是这些部分的具体实现。()
6.在MVC模式中,视图负责处理用户的输入并响应用户的请求。()
7.微服务架构相比于传统的单体架构,更容易进行维护和扩展。()
8.适配器模式主要用于解决接口不兼容的问题。()
A.对象中介者模式
B.类中介者模式
C.接口中介者模式
D.组件中介者模式
二、多选题(本题共20小题,每小题1.5分,共30分,在每小题给出的四个选项中,至少有一项是符合题目要求的)
1.软件架构设计时应该考虑以下哪些原则?()
A.模块化
B.封装
C.可维护性
D.灵活性
2.以下哪些是设计模式中的创建型模式?()
A.基于组件的开发
B.面向对象的设计
C.独立的服务组件
D.面向过程的开发
8.以下哪个模式不属于设计模式中的行为型模式?()
A.策略模式
B.模板方法模式
C.状态模式
D.职责链模式
9.在软件架构中,微服务架构的主要优势是?()
A.高内聚,低耦合
B.提高系统的可维护性
C.系统间的松耦合
D.独立部署和扩展
10.以下哪个模式不属于设计模式中的命令型模式?()

软件工程中的设计模式考核试卷

软件工程中的设计模式考核试卷
A.访问者模式
B.策略模式
C.状态模式
D.职责链模式
二、多选题(本题共20小题,每小题1.5分,共30分,在每小题给出的四个选项中,至少有一项是符合题目要求的)
1.以下哪些是设计模式的基本分类?()
A.创建型模式
B.结构型模式
C.行为型模式
D.数据型模式
2.以下哪些是设计模式的原则?()
A.单一职责原则
3.描述工厂方法模式的结构和优点,同时说明它解决了哪些问题。
4.请阐述观察者模式的核心思想和应用场景,并画出一个观察者模式的UML类图。
标准答案
一、单项选择题
1. B
2. D
3. C
4. A
5. D
6. D
7. C
8. C
9. A
10. B
11. A
12. A
13. D
14. A
15. B
16. A
A.模板方法模式
B.状态模式
C.策略模式
D.职责链模式
18.以下哪些模式可以用于在不违背开放封闭原则的前提下,对已有的类进行扩展?()
A.装饰器模式
B.代理模式
C.适配器模式
D.访问者模式
19.以下哪些模式可以用于降低系统的复杂度?()
A.外观模式
B.享元模式
C.访问者模式
D.桥接模式
20.以下哪些模式可以用于实现对象的多次复用?()
B.开放封闭原则
C.里氏替换原则
D.接口隔离原则
3.以下哪些模式属于创建型模式?()
A.工厂方法模式
B.抽象工厂模式
C.建造者模式
D.原型模式
4.以下哪些模式属于结构型模式?()
A.适配器模式

设计模式考试复习题含答案

设计模式考试复习题含答案

一、1. 设计模式一般用来解决什么样的问题:A.同一问题的不同表相2. 下列属于面向对象基本原则的是:C.里氏代换3. Open-Close原则的含义是一个软件实体:A.应当对扩展开放,对修改关闭.4. 当我们想创建一个具体的对象而又不希望指定具体的类时,使用(A)模式。

A.创建型5. 要依赖于抽象不要依赖于具体。

即针对接口编程不要针对实现编程:(D)依赖倒转原则6. 依据设计模式思想,程序开发中应优先使用的是( A )关系实现复用。

A, 委派7. 设计模式的两大主题是( D ) D.系统复用与系统扩展8. 单体模式中,两个基本要点(AB)和单体类自己提供单例A .构造函数私有 B.唯一实例9. 下列模式中,属于行为模式的是( B ) B观察者10. “不要和陌生人说话”是( D )原则的通俗表述 D.迪米特1. 软件体系结构是指一个系统的有目的的设计和规划,这个设计规划既不描述活动,也不描述系统怎样开发,它只描述系统的组成元素及其相互的交互协作。

2.一个UML模型只描述了一个系统要做什么,它并没告诉我们系统是怎么做。

3.接口是可以在整个模型中反复使用的一组行为,是一个没有属性而只有方法的类。

4.多重性指的是,某个类有多个对象可以和另一个类的一对象关联。

5.当一个类的对象可以充当多种角色时,自身关联就可能发生。

6.在泛化关系中,子类可以替代父类。

后前者出现的可以相同地方。

反过来却不成立。

7.最通常的依赖关系是一个类操作的形构中用到了另一个类的定义。

8.组成是强类型的聚集,因为聚集中的每个部分体只能属于一个整体。

9.实现的符号和继承的符号有相似之处,两者的唯一差别是实现关系用虚线表示,继承关系用实线表示。

10. 设计模式中应优先使用对象组合而不是类继承。

1.适配器模式属于创建型模式结构型(F )2.在设计模式中,“效果”只是指“原因和结果”(T )3.设计模式使代码编制不能真正工程化(T )4.面向对象语言编程中的异常处理,可以理解为责任链模式(T )5.反模式就是反对在软件开发过程中使用设计模式分析:反模式用来解决问题的带有共性的不良方法(F )1.什么是设计模式?设计模式目标是什么?答:设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

设计模式期中考试试题一:单项选择(共20道,每道2分)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 它属于GoF23种设计模式B 它是最简单的设计模式之一C 它是学习其他创建型模式的基础D 它只需要记住一个简单的参数即可获得所需对象的实例E 它类中的方法通常为静态方法F 它返回的类都有一个公共的父类和公共的方法10、对象适配器模式是()原则的典型应用。

A.合成聚合复用原则B.里式代换原则C.依赖倒转原则D.迪米特法则 D.以上表述全部错误。

11.对于依赖倒转的表述错误的是()A.依赖于抽象而不依赖于具体,也就是针对接口编程。

B.依赖倒转的接口并非语法意义上的接口,而是,一个类对其他对象进行调用时,所知道的方法集合。

C.从选项B的角度论述,一个对象可以有多个接口。

D.实现了同一接口的对象,可以在运行期间,顺利地进行替换。

而且不必知道所示用的对象是那个实现类的实例。

E.此题没有正确答案。

12. 现有5个产品族,分布于3各不同的产品等级结构,只要指明一个产品所处的产品族以及它所在的等级结构,就可以唯一地确认这个产品。

那么使用抽象工厂方法模式只需要提供()个具体工厂即可。

A 5B 3C 8D 15E 1F 30G 413.抽象工厂模式的优点有()A 抽象工厂模式隔离了具体类的生成,使得客户并不需要知道什么被创建。

B 所有的具体工厂都实现了抽象工厂中定义的那些公共接口,因此只需改变具体工厂的实例,就可以在某种程度上改变整个软件系统的行为。

C 应用抽象工厂模式可以实现高内聚低耦合的设计目的,因此抽象工厂模式得到了广泛的应用。

D 增加新的具体工厂和产品族很方便,无须修改已有系统,符合“开闭原则”。

E 添加新的产品对象时,难以扩展抽象工厂来生产新种类的产品F 开闭原则的倾斜性(增加新的工厂和产品族容易,增加新的产品等级结构麻烦)14. 对于建造一辆汽车,使用建造者模式中ConcreteBulider(具体建造者)需要做的是()A 提供汽车的各个部件的构造和装配方法B 建造汽车C 建造汽车部件并且组合成汽车D 指挥汽车建造E 定义抽象接口15单例模式的最主要的思想是()A 构造方法私有化B 使用默认构造方C 构造方法静态化D 类私有化E 类不允许被继承F 类的方法不允许被访问16. 在笔记本电脑用电的例子中,属于适配器的是()A 充电器B 插座C 笔记本D 笔记本电源插孔17.桥接模式将继承关系转换为()关系,从而降低了类与类之间的耦合,减少了代码编写量A 关联B 多态C 实现D 重构E 抽象18. 组合模式描述了如何将容器对象和叶子对象进行()组合,使得用户在使用时无须对它们进行区分,可以一致地对待容器对象和叶子对象A 递归B 重构C 并列D 内置E 关联19. 面向对象设计原则首先都是()的原则,遵循这些设计原则可以有效地提高系统的复用性,同时提高系统的可维护性。

A 重载B 复用C 面向对象D 封装E 继承F 多态G抽象20. 结构型模式分为类模式和对象模式,以下可以是类模式的是()A 适配器模式B 桥接模式C 组合模式D 装饰模式E 外观模式F 享元模式G 代理模式二:多项选择题(共10道,每道3分)1.以下说法错误的有()A 对于面向对象的软件系统设计来说,在支持可维护性的同时,需要提高系统的可复用性。

B 迪米特法则要求一个软件实体应当尽可能多的与其他实体发生相互作用。

C 单一职责原则要求在软件系统中,一个类只负责一个功能领域中的相应职责。

D 开闭原则要求一个软件实体应当对扩展开放,对修改关闭,但是为了增强系统功能,可以随便的修改源代码。

E 里氏代换原则可以通俗表述为在软件中如果能够使用基类对象,那么一定能够使用其子类对象。

F 依赖倒转原则要求抽象不应该依赖于细节,细节应该依赖于抽象;要针对接口编程,不要针对实现编程。

G 接口隔离原则要求客户端不应该依赖那些它不需要的接口,即将一些大的接口细化成一些小的接口供客户端使用。

H 合成复用原则要求复用时尽量使用继承,而不使用对象组合。

2. 设计模式一般有如下几个基本要素:模式名称、问题、目的、解决方案、效果、实例代码和相关设计模式,其中的关键元素包括以下四个方面()A 模式名称B 问题C 目的D 解决方案E 效果F 实例代码G 相关设计模式3. 简单工厂模式包含三个角色是()A 工厂角色B 抽象产品口C 具体产品角色D 抽象接口角色E 生产者角色F 用户角色G 使用者角色4.工厂方法模式与简单工厂模式相比的优点有()A 工厂方法模式很好的符合开闭原则B 工厂方法类模式中工厂类职责变轻,业务逻辑相对简单C 具体产品与工厂类之间的耦合降低D工厂方法模式是简单工厂模式的进一步抽象和推广E Factory类内的方法常使用静态方法F 只提供一个工厂类G不需要考虑对象的具体创建细节闭原则的倾斜性(增加新的工厂和产品族容易,增加新的产品等级结构麻烦)5. 建造者模式的优点有哪些()A分步骤构建一个复杂的对象B应对“复杂对象各个部分”的频繁需求变动C用户使用不同的具体建造者即可得到不同的产品对象D如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大E如果产品之间的差异性很大,则不适合使用建造者模式,因此其使用范围受到一定的限制6.对于原型模式的优点有()A当创建新的对象实例较为复杂时,使用原型模式可以简化对象的创建过程,通过一个已有实例可以提高新实例的创建效率。

B 可以动态增加或减少产品类。

C 原型模式提供了简化的创建结构。

D 可以使用深克隆的方式保存对象的状态。

E 实现深克隆时需要编写较为复杂的代码。

F 需要为每一个类配备一个克隆方法7.单例模式的要点()A 某个类只能有一个实例B 必须自行创建这个实例C 必须自行向整个系统提供这个实例D 类的方法不能被访问E 实例的创建个数不受限制F 实例的创建者不受限制8.适配器模式的优点()A将目标类和适配者类解耦B增加了类的透明性和复用性C灵活性和扩展性都非常好,通过使用配置文件,可以很方便地更换适配器D其使用有一定的局限性,不能将一个适配者类和它的子类都适配到目标接口。

E要想置换适配者类的方法不容易9. 组合模式包含角色有()A 抽象构件B 叶子构件C 容器构件D 客户类E 树根构F 枝干构件10桥接模式的优点()A分离抽象接口及其实现部分。

B桥接模式提高了系统的可扩充性,在两个变化维度中任意扩展一个维度,都不需要修改原有系统。

C 实现细节对客户透明,可以对用户隐藏实现细节。

D桥接模式的引入会增加系统的理解与设计难度E桥接模式要求正确识别出系统中两个独立变化的维度,因此其使用范围具有一定的局限性。

三:简答题(共2道题,每道10分)1.什么是开--闭原则。

2.画出抽象工厂的类图。

四:读程序题(1道,每道10分)读下面程序,并指出是何种模型,以及该模型都有那些角色public class Bird{public void tweedle(){System.out.println("鸟儿叽叽叫!");}public void fly(){System.out.println("鸟儿快快飞!");}}public class BirdAdapter extends Bird implements Robot{ public void cry(){System.out.print("机器人模仿:");super.tweedle();}public void move(){System.out.print("机器人模仿:");super.fly();}}public class Dog{public void wang(){System.out.println("狗汪汪叫!");}public void run(){System.out.println("狗快快跑!");}}public class DogAdapter extends Dog implements Robot {public void cry(){System.out.print("机器人模仿:");super.wang();}public void move(){System.out.print("机器人模仿:");super.run();}}public interface Robot{public void cry();public void move();}public class Client{public static void main(String args[]){Robot robot=(Robot)XMLUtil.getBean();robot.cry();robot.move();}}import javax.xml.parsers.*;import org.w3c.dom.*;import org.xml.sax.SAXException;import java.io.*;public class XMLUtil{//该方法用于从XML配置文件中提取具体类类名,并返回一个实例对象public static Object getBean(){try{//创建文档对象DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = dFactory.newDocumentBuilder();Document doc;doc = builder.parse(new File("config.xml"));//获取包含类名的文本节点NodeList nl = doc.getElementsByTagName("className");Node classNode=nl.item(0).getFirstChild();String cName=classNode.getNodeValue();//通过类名生成实例对象并将其返回Class c=Class.forName(cName);Object obj=c.newInstance();return obj;}catch(Exception e){e.printStackTrace();return null;}}}<?xml version="1.0"?>-<config> <className>BirdAdapter</className> </config>。

相关文档
最新文档