一、选择题
1、设计模式起源于 ( )
A、 机械设计 B、 建筑工程设计
C、 水利工程设计 D、 工业电力化设计
B
2、“不要和陌生人说话” 是 ( ) 原则的通俗表述。
A 、 接口隔离 B 、 里氏 替换 C 、 依赖 倒置 D、迪米特
D
3、目前 常见 的设计模式主要有 ( ) 种。
A、 23 B、 21 C、 32 D、 28
A
4、以下关于单一职责原则的叙述不正确的是( )。
A、 单一职责原则的英文名称是Single Responsibility Principle.
B、 单一职责原则要求一个类只有一个职责
C、 单一职责原则有利于对象的稳定,降低类的复杂性
D、 单一职责原则提高了类之间的耦合性
D(单一职责原则是实现高内聚低耦合的指导方针)
5、以下关于依赖倒置原则 的叙述不正确的是( )
A、 依赖倒置原则的简称是 DIP
B、 高层模块不依赖于低层模块,低层模块依赖于高层模块
C、 依赖倒置原则中高层模块和低层模块都依赖于抽象
D、 依赖倒置原则实现模块间的松耦合
B(高层模块和低层模块都应该依赖于抽象)
6、下面关于单例模式说法错误的是 ( )
A、 单例模式是指一个类只有一个实例
B、 单例类从实现方式上分为懒汉式和饿汉式
C 、 单例类从功能上分为状态单例类和无状态单例类
D 、 可以通过继承的方式对单例类进行扩展得到功能更丰富的单例类
D
7、下面关于工厂方法模式说法错误的是 ( )。
A、 工厂方法模式使一个类是实例化延迟到其子类中
B、 工厂方法模式中具有抽象工厂、具体工厂、抽象产品和具体产品 4 个角色
C、 工厂方法模式可以处理多个产品的多个等级结构
D、 工厂方法模式可以屏蔽产品类
C(工厂方法模式只能处理一个产品等级结构,而抽象工厂模式可以处理多个产品等级结构)
8、在以下情况不适合使用职责链模式 ( )
A、有多个 对象可以处理请求,哪个对象处理该请求 在 运行时刻自动确定
B、在需要用比较通用和复杂的对象指针代替简单的指针的时候
C 、你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求
D、一个请求需要一系列的处理工作
B
9、当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用( )模式
A 、 结构型 B、创建型 C 、 行为型 D 、 以上都可以
B
10、以下用来描述适配器模式的是 ( )
A 、 表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作(访问者模式)
B 、 定义一个用于创建对象的接口,让子类决定实例化哪一个类(工厂方法模式)
C、将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作
D 、动态地给一个对象增加一些额外的职责(装饰模式)
C
11、以下用来描述命令模式是( )
A、将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。
B 、 定义一系列的算法, 把它们一个个封装起来,并且使它们可相互替换,本模式使得算法可独立于使用它的客户而变化(策略模式)
C 、 为其他对象提供一种代理以控制对这个对象的访问(代理模式)
D 、 保证一个类仅有一个实例,并提供一个访问它的全局访问点(单例模式)
A
12、以下关于创建型模式说法正确的是( )
A、 创建型模式关注的是对象的创建方法
B 、 创建型模式关注的是功能的实现方法
C 、 创建型模式关注的是组织类和对象的常用方法
D 、 创建型模式关注的是对象间的协作
A
13、以下用来描述装饰模式的 是 ( )
A 、运用共享技术有效地支持大量细粒度的对象(享元模式)
B 、用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象(原型模式)
C 、将抽象部分与它的实现部分分离,使它们都可以独立地变化(桥接模式)
D、动态地给一个对象添加一些额外的职责
D
14、不应该强迫客户依赖于它们不用的方法是关于 ( )的表述。
A、开-闭原则 B、接口隔离原则 C、里氏替换原则 D 、依赖倒置原则
B
15、以下用来描述外观模式的是 ( )
A、为子系统中的一组接口提供一个一致的界面,本模式定义了一个高层接口,这个接口使得这一子系统更加容易使用
B 、 定义一个用于创建对象的接口,让子类决定实例化哪一个类(工厂方法模式)
C 、 保证一个类仅有一个实例,并提供一个访问它的全局访问点(单例模式)
D 、 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。样以后就可将该对象恢复到原先保存的状态(备忘录模式)
A
16、以下意图哪个是用来描述桥接模式( )
A、提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类(抽象工厂模式)
B、将抽象部分与它的实现部分分离,使它们都可以独立地变化
C、将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示(建造者模式)
D、动态地给一个对象添加一些额外的职责(装饰模式)
B
17、开闭原则的含义是一个软件实体( )
A、应当对继承开放,对实现关闭.
B、应当对修改开放,对扩展关闭
C、应当对扩展开放,对修改关闭
D、以上都不对
C
18、以下哪个用来描述建造者模式( )
A、定义一个用于创建对象的接口,让子类决定实例化哪一个类(工厂方法模式)
B、保证一个类仅有一个实例,并提供一个访问它的全局访问点(单例模式)
C、将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
D、运用共享技术有效地支持大量细粒度的对象(享元模式)
C
19、以下哪个不属于设计模式的要素( )
A、模式名称 B、问题 C、因素 D、环境
C(设计模式关键因素:模式名称、问题、解决方案和效果)
20、以下不属于结构型模式的是( )
A、代理模式 B、工厂方法模式 C、适配器模式 D、享元模式
B(工厂方法模式属于创建型模式)
21、关于模式应用场景,在以下哪种情况适合使用组合模式( )
A、你想使用一个已经存在的类,而它的接口不符合你的需求(适配器模式)
B、当一个类的实例只能有几个不同状态组合中的一种时(原型模式)
C、你想表示对象的部分-整体层次结构
D、一个对象的行为取决于它的状态,并且它必须在运行时根据状态改变行为(状态模式)
C
22、Java的异常处理机制可理解为哪一种行为模式( )
A、观察者模式 B、迭代器模式
C、职责链模式 D 、策略模式
C
23、设计模式的两大主题是( )
A、系统的维护与开发 B、 对象组合与类的继承
C、系统架构与系统开发 D、系统复用与系统扩展
D
24、要依赖于抽象,不要依赖于具体,即针对接口编程,不要针对实现编程,是( )的表述。
A、开闭原则 B、接口隔离原则
C、里氏替换原则 D、依赖倒转原则
D
25、以下意图哪个是用来描述抽象工厂模式( )
A、提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类
B、定义一个用于创建对象的接口,让子类决定实例化哪一个类(工厂方法模式)
C、将一个类的接口转换成客户希望的另外一个接口(适配器模式)
D、表示一个作用于某对象结构中的各元素的操作(访问者模式)
A
26、对于违反里氏替换原则的两个类,可以采用的候选解决方案错误的是:( )
A、创建一个新的抽象类C,作为两个具体类的超类,将A和B共同的行为移动到C中,从而解决A和B行为不完全一致的问题。
B、将B到A的继承关系改组成委派关系。
C、区分是“Is-a”还是”Has-a”。如果是“Is-a”,可以使用继承关系,如果是”Has-a”应该改成委派关系
D、以上方案错误
D
27、关于模式适用性,在以下情况不适合使用享元模式?( )
A、一个应用程序使用了大量的对象。
B、完全由于使用大量的对象,造成很大的存储开销。
C、对象的大多数状态都可变为外部状态。
D、你想使用一个已经存在的类,而它的接口不符合你的需求
D
28、适配器模式是( )原则的典型应用。
A、合成复用原则 B、里氏替换原则
C、依赖倒置原则 D、迪米特法则
A
29、当需要在项目中定制自己的元素时,可使用()模式来定制。
A、结构型 B、创建型 C、行为型 D、复用型
B
二、填空题
1、设计模式分为创建型 、结构型 、行为型 三大类型。
2、设计模式中的七个原则包括:单一职责原则、开闭原则、里氏代换原则、依赖倒转原则、接口隔离原则、合成复用原则和迪米特法则 。
3、设计模式中,对迪米特法则进行应用的设计模式有外观模式和中介者模式 。
4、装饰模式 用于动态地给一个对象添加一些额外的职责。
5、外观模式 要求一个子系统的外表与其内部的通信必须通过一个统一的对象进行。
6、桥梁模式 的定义是将抽象和现实解耦,使得两者可以独立地变化。
7、观察者模式 定义对象间一种一对多的关系,使得每当一个对象改变状态,则 所有依赖于它的对象都会得到通知并被自动更新。
8、行为型模式 主要用于描述对类或对象怎样交互和怎样分配职责。
9、组合模式属于 结构型模式 、原型模式属于 创建型 模式。
10、模板方法模式 定义一个操作中的算法框架,将一些步骤延迟到子类中实现。
11、策略模式 定义一组算法,将每个算法封装起来,并且使它们之间可以互换。
12、备忘录模式 捕获一个对象的内部状态,并在该对象之外保存这个状态,以后可以将该对象恢复到原先保存的状态。
13、适配器模式 将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。
14、简单工厂模式 可以根据参数的不同返回不同的实例。
15、MVC模型的基本工作原理是基于 观察者模式 ,实现是属于 命令模式 。
16、依赖倒转原则 要求抽象不应该依赖于细节,细节应当依赖于抽象。
17、里氏替换原则 的核心思想是在任何父类出现的地方都可以用它的子类来替代。
18、单一职责原则 的核心思想是系统中的每一个对象都应该只有一个单独的职责,而所有对象所关注的就是自身职责的完成。
19、适配器模式,分为类适配器和对象适配器两种实现。其中类适配器采用的是继承 关系,而对象适配器采用的是 关联/委派 关系。
20、Java数据库连接库JDBC使用的设计模式是桥接模式。