文档库 最新最全的文档下载
当前位置:文档库 › 设计模式题库

设计模式题库

设计模式题库
设计模式题库

1.1 (D)以用户的观点表示系统的目标,它是所有视图的核心,该视图描述系统的需求。

A 结构视图

B 行为视图

C 实现视图

D 用户视图

E 环境视图

F 物理视图G逻辑视图

1.2 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同(ABC)的对象集合的总称。

A 属性

B 操作

C 关系

D 约束

E 继承

F 多态

G 封装

2.1 面向对象设计原则首先都是(B)的原则,遵循这些设计原则可以有效地提高系统的复用性,同时提高系统的可维护性。

A 重载

B 复用

C 面向对象

D 封装

E 继承

F 多态G抽象

2.2以下说法错误的有(BDH)

A 对于面向对象的软件系统设计来说,在支持可维护性的同时,需要提高系统的可复用性。

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

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

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

以随便的修改源代码。

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

类对象。

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

要针对实现编程。

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

些小的接口供客户端使用。

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

3.1 结构型模式分为类模式和对象模式,以下可以是类模式的是(A)

A 适配器模式

B 桥接模式

C 组合模式

D 装饰模式

E 外观模式

F 享元模式

G 代理模式

3.2 设计模式一般有如下几个基本要素:模式名称、问题、目的、解决方案、效果、实例代码和相关设计模式,其中的关键元素包括以下四个方面(ABDE)

A 模式名称

B 问题

C 目的

D 解决方案

E 效果

F 实例代码

G 相关设计模式

4.1 以下关于简单工厂模式叙述错误的是(A)

A 它属于GoF23种设计模式

B 它是最简单的设计模式之一

C 它是学习其他创建型模式的基础

D 它只需要记住一个简单的参数即可获得所需对象的实例

E 它类中的方法通常为静态方法

F 它返回的类都有一个公共的父类和公共的方法

4.2 简单工厂模式包含三个角色是(ABC)

A 工厂角色

B 抽象产品口

C 具体产品角色

D 抽象接口角色

E 生产者角色

F 用户角色

G 使用者角色

5.1 Java中的(A)是指在程序运行时获取已知名称的类或已有对象的相关信息的一种机制,包括类的方法、属性、超类等信息,还包括实例的创建和实例类型的判断等

A 反射

B 继承

C 多态

D 组合

E 聚合

F 抽象

G 抽象

5.2 工厂方法模式与简单工厂模式相比的优点有(ABCD)

A 工厂方法模式很好的符合开闭原则

B 工厂方法类模式中工厂类职责变轻,业务逻辑相对简单

C 具体产品与工厂类之间的耦合降低

D工厂方法模式是简单工厂模式的进一步抽象和推广

E Factory类内的方法常使用静态方法

F 只提供一个工厂类

G不需要考虑对象的具体创建细节

6.1现有5个产品族,分布于3各不同的产品等级结构,只要指明一个产品所处的产品族以

及它所在的等级结构,就可以唯一地确认这个产品。那么使用抽象工厂方法模式只需要提供(A)个具体工厂即可。

A 5

B 3

C 8

D 15

E 1

F 30

G 4

6.2抽象工厂模式的优点有(A)

A 抽象工厂模式隔离了具体类的生成,使得客户并不需要知道什么被创建。

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

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

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

E 添加新的产品对象时,难以扩展抽象工厂来生产新种类的产品

F 开闭原则的倾斜性(增加新的工厂和产品族容易,增加新的产品等级结构麻烦)

7.1 对于建造一辆汽车,使用建造者模式中ConcreteBulider(具体建造者)需要做的是(A)

A 提供汽车的各个部件的构造和装配方法

B 建造汽车

C 建造汽车部件并且组合成汽车

D 指挥汽车建造

E 定义抽象接口

7.2 建造者模式的优点有哪些(ABC)

A分步骤构建一个复杂的对象

B应对“复杂对象各个部分”的频繁需求变动

C用户使用不同的具体建造者即可得到不同的产品对象

D如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大

E如果产品之间的差异性很大,则不适合使用建造者模式,因此其使用范围受到一定的限制

8.1 对于原型模式中,Java语言提供的clone()方法将对象复制了一份并返回给调用者。一般而言,对于clone()方法描述错误的是(A)

A 对任何的对象x,都有x.clone() =x,即克隆对象与原对象是同一个对象

B 对任何的对象x,都有x.clone().getClass()==x.getClass(),即克隆对象与原对象的类型一样

C 如果对象x的equals()方法定义恰当,那么x.clone().equals(x)应该成立

D 该clone()方法是深克隆

8.2对于原型模式的优点有(ABCD)

A当创建新的对象实例较为复杂时,使用原型模式可以简化对象的创建过程,通过一个已有实例可以提高新实例的创建效率。

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

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

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

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

F 需要为每一个类配备一个克隆方法

9.1 单例模式的最主要的思想是(A)

A 构造方法私有化

B 使用默认构造方

C 构造方法静态化

D 类私有化

E 类不允许被继承

F 类的方法不允许被访问

9.2单例模式的要点(ABC)

A 某个类只能有一个实例

B 必须自行创建这个实例

C 必须自行向整个系统提供这个实例

D 类的方法不能被访问

E 实例的创建个数不受限制

F 实例的创建者不受限制

10.1 在笔记本电脑用电的例子中,属于适配器的是(A)

A 充电器

B 插座

C 笔记本

D 笔记本电源插孔

10.2适配器模式的优点(ABC)

A将目标类和适配者类解耦

B增加了类的透明性和复用性

C灵活性和扩展性都非常好,通过使用配置文件,可以很方便地更换适配器

D其使用有一定的局限性,不能将一个适配者类和它的子类都适配到目标接口。

E要想置换适配者类的方法不容易

11.1桥接模式将继承关系转换为(A)关系,从而降低了类与类之间的耦合,减少了代码编写量。

A 关联

B 多态

C 实现

D 重构

E 抽象

11.2桥接模式的优点(ABC)

A分离抽象接口及其实现部分。

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

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

D桥接模式的引入会增加系统的理解与设计难度

E桥接模式要求正确识别出系统中两个独立变化的维度,因此其使用范围具有一定的局限性。

12.1组合模式描述了如何将容器对象和叶子对象进行(A)组合,使得用户在使用时无须对它们进行区分,可以一致地对待容器对象和叶子对象

A 递归

B 重构

C 并列

D 内置

E 关联

12.2组合模式包含角色有(ABCD)

A 抽象构件

B 叶子构件

C 容器构件

D 客户类

E 树根构

F 枝干构件

13.1以下不适合使用装饰模式的是(A)

A 装饰某个对象时需要修改该类的对象

B在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责

C 需要动态地给一个对象增加功能,这些功能也可以动态地被撤销

D当不能采用继承的方式对系统进行扩充或者采用继承不利于系统扩展和维护时

E 只需要对某个对象进行外观修饰而不需要修改其内在属性时

13.2装饰模式的优点有哪些(ABC)

A 可以通过一种动态的方式来扩展一个对象的功能,通过配置文件可以在运行时选

择不同的装饰器,从而实现不同的行为

B可以使用多个具体装饰类来装饰同一对象,得到功能更为强大的对象

C具体构件类与具体装饰类可以独立变化,用户可以根据需要增加新的具体构件类

和具体装饰类,在使用时再对其进行组合,原有代码无须改变,符合“开闭原则”

D使用装饰模式进行系统设计时将产生很多小对象

E装饰模式比继承更加易于出错,排错也很困难,对于多次装饰的对象,调试时寻找错误可能需要逐级排查,较为烦琐。

14.1 外观模式指的是外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组(A)提供一个一致的界面。

A 接口

B 按钮

C 函数调用

D 系统调用

E 连接

14.2外观模式有哪些优点(ABCD)

A对客户屏蔽子系统组件,减少了客户处理的对象数目并使得子系统使用起来更加容易B通过引入外观模式,客户代码将变得很简单,与之关联的对象也很少

C实现了子系统与客户之间的松耦合关系,这使得子系统的组件变化不会影响到调用它的客户类,只需要调整外观类即可

D降低了大型软件系统中的编译依赖性,并简化了系统在不同平台之间的移植过程,因为编译一个子系统一般不需要编译所有其他的子系统

E 不能很好地限制客户使用子系统类

F 增加新的子系统可能需要修改外观类或客户端的源代码,违背了“开闭原则”

15.1 (A)正是为解决这一类问题而诞生的。享元模式通过共享技术实现相同或相似对象的重用。

A享元模式B外观模式C 代理模式D 组合模式E 命令模式

15.2享元模式的优点有哪些(AB)

A享元模式的优点在于它可以极大减少内存中对象的数量,使得相同对象或相似对象在内存中只保存一份

B享元模式的外部状态相对独立,而且不会影响其内部状态,从而使得享元对象可以在不同的环境中被共享

C享元模式运用共享技术有效地支持大量细粒度对象的复用。

D享元模式使得系统更加复杂,需要分离出内部状态和外部状态,这使得程序的逻辑复杂化。

E为了使对象可以共享,享元模式需要将享元对象的状态外部化,而读取外部状态使得运行时间变长。

16.1(A)可以在客户端和目标对象之间起到中介的作用。

A代理对象B 被代理对象C 使用代理的对象D 中间对象E 中介对象

16.2代理模式包含哪些角色(ABC)

A抽象主题角色B代理主题角色C真实主题角色

D被代理主题角色E 中介主题角色 F 中间主题角色

17.1 在职责链模式里,很多对象由每一个对象对其(A)对象的引用而连接起来形成一条链。

A 下家B上家C 周围D 所有E 自身

17.2 职责链可以是(ABC),沿着链来传递请求。

A一条直线B一个环C一个树形结构D网状

18.1在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用(A)来进行设计。

A 命令模式

B 代理模式

C 桥接模式

D 适配者模式E解释器模式

18.2命令模式的优点有哪些(ABCD)

A降低系统的耦合度。

B新的命令可以很容易地加入到系统中。

C可以比较容易地设计一个命令队列和宏命令(组合命令)。

D可以方便地实现对请求的Undo和Redo。

E使用命令模式可能会导致某些系统有过多的具体命令类。

19.1 (A)描述了如何构成一个简单的语言解释器,主要应用在使用面向对象语言开发的编译器中。

A解释器模式B命令模式 C 代理模式 D 迭代器模式 E 适配器模式

19.2 以下说法正确的是(ABC)

A抽象语法树描述了如何构成一个复杂的句子,通过对抽象语法树的分析,可以识别出语言中的终结符和非终结符类。

B在解释器模式中,每一种终结符和非终结符都有一个具体类与之对应,正因为使用类来表示每一个语法规则,使得系统具有较好的扩展性和灵活性。

C 解释器模式的优点包括易于改变和扩展文法、易于实现文法和增加了新的解释表达式的方式。

D 解释器模式的执行效率很高

E 解释器的应用场景很广泛

20.1 在迭代器模式中,提供一个(A)的迭代器来对聚合对象进行访问和遍历。

A 外部

B 内部

C 中间

D 以上三者都可以

20.2迭代器模式的优势有哪些(ABCD)

A它支持以不同的方式遍历一个聚合对象。

B 迭代器简化了聚合类。

C在同一个聚合上可以有多个遍历。

D在迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码,满足“开闭原则”的要求

E 增加新的聚合类需要对应增加新的迭代器类

F 类的个数成对增加,这在一定程度上增加了系统的复杂性

21.1 以下使用中介者模式的是(A)

A QQ群聊

B QQ分组

C QQ视频

D QQ一对一聊天

21.2 中介者模式是为了解决在用户与用户直接聊天的设计方案中,用户对象之间存在很强的关联性,将导致系统出现如下问题(ABC)

A系统结构复杂B对象可重用性差C 系统扩展性低D 系统易于维护

22.1一种类似“后悔药”的机制是(A)

A备忘录模式B观察者模式C终结者模式D后悔模式

22.2备忘录模式包含下列哪些角色(ABC)

A原发器B备忘录C负责人D代理

23.1以下哪一个模式是定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新(A)

A观察者模式B代理模式C外观模式D备忘录模式

23.2观察者模式有哪些优点(AB)

A实现表示层和数据逻辑层的分离

B支持广播通信

C支持以不同的方式遍历一个聚合对象

D简化了对象之间的交互,将各同事解耦

24.1以下哪一个模式是允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类(A)

A状态模式B享元模式C职责链模式D命令模式

24.2以下模式哪些是对象行为模式(AB)

A状态模式B观察者模式C模版方法模式D解释器模式

25.1以下哪一个模式是对算法的封装,它把算法的责任和算法本身分割开,委派给不同的对象管理(A)

A策略模式B模版方法模式C解释器模式D迭代器模式

25.2策略模式有以下哪几种角色(ABC)

A环境类B抽象策略类C具体策略类D抽象命令类

26.1模板方法模式是基于(A)的代码复用基本技术

A继承B实现C分装D接口

26.2模块方法具体包含哪些角色(AB)

A抽象类B具体子类C环境类D命令类

27.1以下哪一个模式是表示一个作用于某对象结构中的各元素的操作,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作(A)

A访问者模式B桥接模式C原型模式D单例模式

27.2访问者模式包括的两个层次结构,分别是(AB)

A访问者层次结构 B 元素层次结构

C对象层结构D类层结构

设计模式试卷

设计模式期中考试试题 一:单项选择(共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各不同的产品等级结构,只要指明一个产品所处的产品族以及它所在的等级结构,就可以唯一地确认这个产品。那么使用抽象工厂方法模式只需要提供

软件设计模式试题集 含答案

设计模式试题 一.选择 1. 设计模式具有的优点()。 A.适应需求变化 B.程序易于理解 C.减少开发过程中的代码开发工作量 D.简化软件系统的设计 2. 设计模式一般用来解决什么样的问题( )。 A.同一问题的不同表相 B 不同问题的同一表相 C.不同问题的不同表相 D.以上都不是 3. 设计模式的两大主题是( )。 A.系统的维护与开发 B.对象组合与类的继承 C.系统架构与系统开发 D.系统复用与系统扩展 4. 以下哪些问题通过应用设计模式不能够解决。() A)指定对象的接口B)针对接口编程 C)确定软件的功能都正确实现D)设计应支持变化 二.填空 1. 模式的基本要素包括名称、意图、问题、解决方案、参与者和协作者、(效果)、实现、GoF 参考。 2. 设计模式基本原则包括:开闭原则,(从场景进行设计的原则),包容变化原则。 3. 设计模式是一个(抽象)的方案,它可以解决一类问题。 4. 1. 在设计模式群体中,效果是指(原因和结果)。三. 判断 1. 适配器模式属于创建型模式。错 2. 在设计模式中,“效果”只是指“原因和结果”。对 3. 设计模式使代码编制不能真正工程化。错 4. 设计模式的两大主题是系统复用与系统扩展。对四. 名词解释 1. 设计模式 是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 2. 模板 模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 3. 模式 就是解决某一类问题的方法论。把解决某类问题的方法总结归纳到理论高度,那就是模式。 4. 内聚度 模块内部各成分彼此结合的紧密程度。五.简答 题 1. 什么是设计模式?设计模式的目标是什么?设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码 设计经验的总结。使用设计模式是为了可 重用代码、让代码更容易被他人理解、保证代码可靠性。 2. 设计模式的基本要素有哪些? 名称,意图,问题,解决方案,参与者和协作者,效果,实现,GOF 参考。 3. 设计模式中一般都遵循的原则有什么? 开-闭原则,根据场景进行设计原则,优先组合原则,包容变化原则。 4. 四人团针对“创建优秀面向对象设计”建议了哪些策略? 针对接口编程,优先使用对象组合而不是类继承,找到并封装变化点。 第6 章 facade(外观)模式 一.选择 1. 外观模式的作用是()。A.当不能采用生成子类的方法进行扩充时,动态地给一个对象添加一些 额外的功能。B.为了系统中的一组功能调用提供一个一致的接口,这个接口使得这一子系统更 加容易使用。

设计模式笔试题

建造者模式 题目:程序设计 生产电脑只需要CUP、内存和显卡,现在需要生产宏基和戴尔两个品牌的电脑。提示:生产电脑的过程中将产品的结构和产品的零件的建造过程对客户是隐藏起来,把对建造过程进行指挥的责任和具体生产零件商的责任分割开来,达到责任划分和封装的目的。 参考解答:【个人观点】 本题可使用建造者模式,参考类图如下所示: 参考代码如下: /** * -----------------------------------------

* @描述产品构建指导者 * ----------------------------------------- */ public class Director { private Builder builder; public Director(Builder builder){ this.builder = builder; } public void construct(){ builder.buildCPU(); builder.buildMemory(); builder.buildDisplayCard(); } } /** * ----------------------------------------- * @描述抽象建造者 * @作者 weiqj * @日期 2014-7-2 * ----------------------------------------- */ public interface Builder { //CUP

public void buildCPU(); //内存 public void buildMemory(); //显卡 public void buildDisplayCard (); //最终产品 public Product getFinalResult(); } /** * ----------------------------------------- * @描述抽象产品 * @作者 weiqj * @日期 2014-7-2 * ----------------------------------------- */ public abstract class Product { protected List parts = new ArrayList(); //添加部件 public void add(String part){ parts.add(part); }

2019年上半年软件设计师上午试题及答案

2019年上半年软件设计师上午试题及答案 1.计算机执行指令的过程中,需要由()产生每条指令的操作信号并将信号送往相应的部件进行处理,以完成指定的操作。 A.CPU的控制器 B.CPU的运算器 C.DMA控制器 D.Cache控制器 2.DMA控制方式是在()之间直接建立数据通路进行数据的交换处理。 A.CPU与主存 B.CPU与外设 C.主存与外设 D.外设与外设 3.CPU访问存储器时,被访问数据一般聚集在一个较小的连续存储区域中。若一个存储单元已被访问,则其邻近的存储单元有可能还要被访问,该特性被称为() A.数据局部性 B.指令局部性 C.空间局部性 D.时间局部性 4.某系统由3个部件构成,每个部件的千小时可靠度都为R,该系统的千小时可靠度为(1-(1-R)2)R,则该系统的构成方式是()。 A.3个部件串联

B.3个部件并联 C.前两个部件并联后与第三个部件串联 D.第一个部件与后两个部件并联构成的子系统串联 5.在()校验方法中,采用模2运算来构造校验位。 A.水平奇偶 B.垂直奇偶 C.海明码 D.循环冗余 6.以下关于RISC (精简指令系统计算机)技术的叙述中,错误的是()。 A.指令长度固定、指令种类尽量少 B.指令功能强大、寻址方式复杂多样 C.增加寄存器数目以减少访存次数 D.用硬布线电路实现指令解码,快速完成指令译码 7.()防火墙是内部网和外部网的隔离点,它可对应用层的通信数据流进行监控和过滤。 A.包过滤 B.应用级网关 C.数据库 D.WEB 8.下述协议中与安全电子邮箱服务无关的是()。 A.SSL

B.HTTPS C.MIME D.PGP 9-10.用户A和B要进行安全通信,通信过程需确认双方身份和消息不可否认。A 和B通信时可使用()来对用户的身份进行认证;使用()确保消息不可否认。 A.数字证书 B.消息加密 C.用户私钥 D.数字签名 A.数字证书 B.消息加密 C.用户私钥 D.数字签名 11.震网(Stuxnet)病毒是一种破坏工业基础设施的恶意代码,利用系统漏洞攻击工业控制系统,是一种危害性极大的()。 A.引导区病毒 B.宏病毒 C.木马病毒 D.蠕虫病毒 12.刘某完全利用任职单位的实验材料、实验室和不对外公开的技术资料完成了一项发明。以下关于该发明的权利归属的叙述中,正确的是()。

最新java设计模式考试题资料

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使用者

吉林大学设计模式期末考试试题答案整理

设计模式分为三种类型,共23种。 创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。 结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式)、访问者模式。 工厂模式(Factory) 意图 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。 适用性 ●当一个类不知道它所必须创建的对象的类的时候。 ●当一个类希望由它的子类来指定它所创建的对象的时候。 ●当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一 信息局部化的时候。 抽象工厂模式(Abstract Factory) 意图 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 适用性 ●一个系统要独立于它的产品的创建、组合和表示时。 ●一个系统要由多个产品系列中的一个来配置时。 ●当你要强调一系列相关的产品对象的设计以便进行联合使用时。 ●当你提供一个产品类库,而只想显示它们的接口而不是实现时。 建造者模式Builder 意图 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 适用性

●当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 ●当构造过程必须允许被构造的对象有不同的表示时。 原型模式Prototype 意图 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 适用性 ●当要实例化的类是在运行时刻指定时,例如,通过动态装载;或者 ●为了避免创建一个与产品类层次平行的工厂类层次时;或者 ●当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能比每次用 合适的状态手工实例化该类更方便一些。 单例模式Singleton 意图 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 适用性 ●当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。 ●当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例 时。 适配器模式Adapter 意图 将一个类的接口转换成另外一个客户希望的接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适用性 ●你想使用一个已经存在的类,而它的接口不符合你的需求。 ●你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼 容的类)协同工作。 ●(仅适用于对象Adapter)你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配 它们的接口。对象适配器可以适配它的父类接口。

设计模式课后习题

建造者模式 课后第一题: 产品类: public class GamePerson { private String face; private String gender; private String cloth; public String getFace() { return face; } public void setFace(String face) { this.face = face; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getCloth() { return cloth; } public void setCloth(String cloth) { this.cloth = cloth; } } 抽象建造类: public abstract class PersonCreate { protected GamePerson person=new GamePerson(); public abstract void createFace(); public abstract void createGender(); public abstract void createCloth(); public GamePerson getPerson(){ return person; } }

具体建造者类: public class PersonType1 extends PersonCreate { public void createFace() { person.setFace("瓜子脸"); } public void createGender() { person.setGender("美女"); } public void createCloth() { person.setCloth("洛丽塔"); } } 具体建造类: public class PersonType2 extends PersonCreate { public void createFace() { person.setFace("国字脸"); } public void createGender() { person.setGender("帅哥"); } public void createCloth() { person.setCloth("西装革履"); } } 指挥者类: public class GamePlayer { private PersonCreate pc; public void choseType(PersonCreate pc){ this.pc=pc; } public GamePerson create(){ pc.createCloth(); pc.createFace(); pc.createGender(); return pc.getPerson(); } } 测试类: public class Test { public static void main(String[] args) { PersonCreate pc=new PersonType1();

软件设计模式试题集58887

第5章设计模式 一.选择 1. 设计模式具有的优点()。 A.适应需求变化 B.程序易于理解 C.减少开发过程中的代码开发工作量 D.简化软件系统的设计 2. 设计模式一般用来解决什么样的问题( )。 A.同一问题的不同表相B不同问题的同一表相 C.不同问题的不同表相 D.以上都不是 3. 设计模式的两大主题是( )。 A.系统的维护与开发 B 对象组合与类的继承 C.系统架构与系统开发 D.系统复用与系统扩展 4. 以下哪些问题通过应用设计模式不能够解决。() A)指定对象的接口B)针对接口编程 C)确定软件的功能都正确实现D)设计应支持变化 解答: 1. A 2. A 3. D 4. C 二.填空 1. 模式的基本要素包括名称、意图、问题、解决方案、参与者和协作者、()、实现、G oF参考。 2. 设计模式基本原则包括:开闭原则,(),包容变化原则。 3. 设计模式是一个( )的方案,它可以解决一类问题。 4. 1. 在设计模式群体中,效果是指()。 解答: 1. 效果 2. 从场景进行设计的原则

3. 抽象 4. 原因和结果 三.判断 1. 适配器模式属于创建型模式。 2. 在设计模式中,“效果”只是指“原因和结果”。 3. 设计模式使代码编制不能真正工程化。 4. 设计模式的两大主题是系统复用与系统扩展。 解答: 1. 错 2. 对 3. 错 4. 对 四.名词解释 1. 设计模式 2. 模板 3. 模式 4. 内聚度 解答: 1. 是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性 2. 模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 3. 就是解决某一类问题的方法论。把解决某类问题的方法总结归纳到理论高度,那就是模式。 4. 五.简答题 1. 什么是设计模式?设计模式的目标是什么?

Java中常见设计模式面试题

Java中常见设计模式面试题 一、设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 1.请列举出在JDK中几个常用的设计模式? 单例模式(Singleton pattern)用于Runtime,Calendar和其他的一些类中。工厂模式(Factory pattern)被用于各种不可变的类如Boolean,像Boolean.valueOf,观察者模式(Observer pattern)被用于 Swing 和很多的事件监听中。装饰器设计模式(Decorator design pattern)被用于多个 Java IO 类中。 2.什么是设计模式?你是否在你的代码里面使用过任何设计模式? 设计模式是世界上各种各样程序员用来解决特定设计问题的尝试和测试的方法。设计模式是代码可用性的延伸 3.Java 中什么叫单例设计模式?请用Java 写出线程安全的单例模式 单例模式重点在于在整个系统上共享一些创建时较耗资源的对象。整个应用中只维护一个特定类实例,它被所有组件共同使用。https://www.wendangku.net/doc/f011776866.html,ng.Runtime是单例模式的经典例子。从 Java 5 开始你可以使用枚举(enum)来实现线程安全的单例。 4.在 Java 中,什么叫观察者设计模式(observer design pattern)?

设计模式复习题

三、题目预测 填空题: 1.请从外观、组合、工厂方法、模板方法、观察者、单件、抽象工厂、命令、迭代器、代理、适配器模式 中选择 7 种填入下列的空缺中。 P610 1)工厂方法模式中,父类负责定义创建对象的公共接口,子类决定要创建的具体类是哪一个。 2)抽象工厂模式提供一系列相关或相互依赖对象的接口而无需指定它们具体的类。 3)单件模式确保某一个类仅有一个实例,并自行实例化并向整个系统提供这个实例。 4)组合模式将对象组合成树形结构以表示“部分 -整体”的层次结构。使得用户对单个对象和组合对象的使用具有一致性。 5)外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用,为子系统中的一组接口提供一个一致的界面,简化了一群类的接口。 6)观察者模式定义对象间的一种一对多的依赖关系 , 当一个对象的状态发生改变时 , 所有依赖于它的对象都得到通知并被自动更新,也就是让对象能在状态改变时被通知。 7)模板模 MVC 模型式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 8)迭代器模式在对象的集合之中游走,而不暴露集合的实现。 9)代理模式包装对象,以控制对比对象的访问。 10)适配器模式封装对象,并提供不同的接口。 2.工厂模式分为 ( 简单工厂 ),( 工厂方法 ),( 抽象工厂 ) 三种类型。 3.适配器模式,分为类的适配器和对象的适配器两种实现。其中类的适配器采用的是(继承)关系,而对 象适配器采用的是(组合聚合)关系。 4.设计模式的基本要素有(名字),(意图),(问题),(解决方案),(参与者与协作者),(实现),(一般性结构)。 5.MVC 模型的基本工作原理是基于 ( 观察者 )模式,实现是基于(命令)模式 6.面向对象的六条基本原则包括:开闭原则,里式代换原则,合成聚合原则以及(依赖倒转),(迪米特 法则)(接口隔离)。 7 .当我们想用不同的请求对客户进行参数化时,可以使用(命令)模式。

软件设计模式(JAVA)习题答案

软件设计模式(Java版)习题 第1章软件设计模式基础 1.1 软件设计模式概述 1.2 UML中的类图 1.3 面向对象的设计原则 一、名词解释 1.一个软件实体应当对扩展开放,对修改关闭,即在不修改源代码的基础上扩展 一个系统的行为。 2.一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。 3.在软件中如果能够使用基类对象,那么一定能够使用其子类对象。 4.是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结, 使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 二、单选择题 1.( A ) 2.( A ) 3. ( A ) 4. ( D ) 5. ( D ) 6.( A ) 7. ( D ) 8.( D ) 9.( D ) 10.( E ) 11.( C ) 12.( C ) 13. ( A ) 三、多选择题 1.( A、B、C、D ) 2. ( A、B ) 3.( A、D ) 4.( A、B、C、D ) 四、填空题 1.依赖倒转、迪米特法则、单一职责 2.模式名字、目的、问题、解决方案、效果、实例代码 3.超类、子类 4.开闭 5.用户 6.依赖倒转 7.组合/聚合 8.结构型、行为型 9.依赖倒转 10.开闭 11.需求收集是否正确、体系结构的构建是否合理、测试是否完全 12.人与人之间的交流 13.接口 14.名称、目的、解决方案 15.对象组合、类继承

16.对象组合 17.对象组合、类继承 18.抽象类的指针 五、简答题 1.答:设计模式按类型分为以下三类: 1)创建型设计模式:以灵活的方式创建对象集合,用于管理对象的创建。 2)结构型设计模式:将己有的代码集成到新的面向对象设计中,用于处理类或对象的组合。 3)行为型设计模式:用于描述对类或对象怎样交互和怎样分配职责。 2.答:设计模式的主要优点如下: 1)设计模式融合了众多专家的经验,并以一种标准的形式供广大开发人员所用,它提供了一套通用的设计词汇和一种通用的语言以方便开发人员之间沟通和交 流,使得设计方案更加通俗易懂。 2)设计模式使人们可以更加简单方便地复用成功的设计和体系结构,将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。设计模式使得重用成功的设计更加容易,并避免那些导致不可重用的设计方案。 3)设计模式使得设计方案更加灵活,且易于修改。 4)设计模式的使用将提高软件系统的开发效率和软件质量,且在一定程度上节约设计成本。 5)设计模式有助于初学者更深入地理解面向对象思想,一方面可以帮助初学者更加方便地阅读和学习现有类库与其他系统中的源代码,另一方面还可以提高软件的设计水平和代码质量。 3.答:设计模式一般有如下几个基本要素:模式名称、问题、目的、解决方案、效 果、实例代码和相关设计模式,其中的关键元素包括模式名称、问题、解决方案和效果。 4.答:正确使用设计模式具有以下优点: ⑴可以提高程序员的思维能力、编程能力和设计能力。 ⑵使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从 而缩短软件的开发周期。 ⑶使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强。 5.答:根据类与类之间的耦合度从弱到强排列,UML中的类图有以下几种关系:依赖关 系、关联关系、聚合关系、组合关系、泛化关系和实现关系。其中泛化和实现的耦合度相等,它们是最强的。

软件设计模式复习题

软件设计模式复习题 1、熟悉每个设计模式的定义、模式UML图解、模式使用情形以及模式优缺点。 2、设计模式的两大主题是什么? 3、设计模式分成几大类?每大类各包含哪些模式? 4、为什么要使用设计模式?使用设计模式有哪些好处? 5、比较抽象工厂模式和工厂方法模式相似性和差异性。什么情况下使用抽象工厂模式?什 么情形下使用工厂方法模式? 6、简述原型模式中浅层克隆和深度克隆的区别?分别给出代码说明。 7、模板方法和普通的实现类继承抽象类方式有何区别? 8、是比较和分析适配器模式和桥接模式之间的共性和差异性。 9、请用组合模式实现学校人事管理模式。 10、综合应用装饰模式、命令模式和状态模式实现工具条命令按钮鼠标进入时高亮显示 状态以及鼠标单击按钮后呈现凹陷状态,表明当前按钮为选中状态。 11、请阐述享元模式是如何节省系统内存的?试举例分析使用享元模式前后的内存节 约之比。 12、使用解析器模式实现对学生成绩表的查询输入语句进行解析并执行查询,成绩表结 14、试比较和分析中介者模式和观察者模式之间的相似性和差异性?两者是否能够相 互转化? 15、模板方法和普通的抽象类继承有什么区别? 16、使用访问者模式对12题中的学生信息进行报到。 1、熟悉每个设计模式的定义、模式UML图解、模式使用情形以及模式优缺点。(见书)答:单件模式: ○1单例模式:class Singleton{private static Singleton instance; private Singleton(){} public static Singleton GetInstance(){if (instance == null) { instance = new Singleton();} return instance; } 客户端代码:class Program{static void Main(string[] args) { Singleton s1 = Singleton.GetInstance(); Singleton s2 = Singleton.GetInstance(); if (s1 = = s2) {Console.WriteLine("Objects are the same instance");} Console.Read();}} ○2多线程时的单例(Lock是确保当一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他线程试图进入锁定的代码,则它将一直等待(即被阻止),直到该对象被释放)class Singleton{private static Singleton instance; private static readonly object syncRoot = new object(); private Singleton(){} public static Singleton GetInstance(){lock (syncRoot) {

Java开发工程师笔试题(带答案)

Java开发工程师笔试试题 (请不要在试题上留任何痕迹,所有答案均写在答题纸上) 一.编程题(共26分) 1.任意写出一种排序算法。(6分) public void sort(int [] array){ //代码区 } 2.求1+2+3+..n(不能使用乘除法、for 、while 、if 、else 、switch 、case 等关 键字以及条件判断语句)(8分) public int sum(int n){ //代码区 return 0; } 3.完成下面方法,输入一个整数,输出如下指定样式图案。(12分) 输入:3, 输出: 1*2*3 7*8*9 4*5*6

输入:4 输出: 1*2*3*4 9*10*11*12 13*14*15*16 5*6*7*8 public void drawNumPic(int n){ //代码区 } 二.选择题(定项选择每题3分,不定项选择每题4分,共63分) 1.在基本JAVA类型中,如果不明确指定,整数型的默认是__类型,带小数的默认是__类型?( B ) A.int float B.int double C.long float D.long double 2.只有实现了__接口的类,其对象才能序列化( A ) A.Serializable B.Cloneable https://www.wendangku.net/doc/f011776866.html,parable

D.Writeable 3.代码System. out. println(10 % 3 * 2);将打印出?( B ) A.1 B.2 C.4 D.6 4.以下程序运行的结果为( A ) public class Example extends Thread{ @Override public void run(){ try{ Thread.sleep(1000); }catch (InterruptedException e){ e.printStackTrace(); } System.out.print("run"); } public static void main(String[] args){ Example example=new Example(); example.run(); System.out.print("main"); } }

吉林大学2012级软件设计模式试题

2014-2015学年第1学期 2012级《软件设计模式》考试试题(开卷) 考试时间:2014年 班级学号姓名 ?本试卷满分100分; ?请将答案写在答题纸上,写明题号,不必抄题,字迹工整、清晰; ?试题中使用C++语言作为描述语言,答题时可以使用C++或Java或C#程序设计语言中 的任意一种作为描述语言,但整个卷面只能使用其中一种,不得混合使用; ?请在答题纸和试题纸上都写上你的班级,学号和姓名,交卷时请将试题纸、答题纸和草纸 一并交上来。 一、单选题(共20分,每题2分) 1.类设计中,“变化是绝对的,稳定是相对的”,下列哪个不属于这句话中“变化”的范畴? (A) 改变函数参数的类型(B) 增加新的数据成员 (C) 改变编程语言(D) 改变对象交互的过程和顺序 2.Open-Close原则的含义是一个软件实体: (A) 应当对扩展开放,对修改关闭 (B) 应当对修改开放,对扩展关闭 (C) 应当对继承开放,对修改关闭 (D) 以上都不对 3.下列关于继承表述错误的是: (A) 继承是一种通过扩展一个已有类的实现,从而获得新功能的复用方法 (B) 泛化类(超类)可以显式地捕获那些公共的属性和方法。特殊类(子类)则通过附加 属性和方法来进行实现的扩展 (C) 破坏了封装性,因为这会将父类的实现细节暴露给子类 (D) 继承本质上是“白盒复用”,对父类的修改,不会影响到子类 4.下列关于对象组合/聚合,说法错误的是: (A) 容器类能通过被包含对象的接口来对其进行访问 (B) 属于黑盒复用,封装性好,因为被包含对象的内部细节对外是不可见 (C) 可以在运行时将被包含对象改变成同类型对象,从而改变容器类的行为效果,但没有 改变容器类的接口 (D) 比继承关系更加灵活,代价是相比继承关系,增强了类间的耦合度 5.用于分离接口和具体实现,使得接口和实现可独立变化的是: (A)适配器模式(B) 桥接模式(C) 命令模式(D)模板方法模式 6.体现“集中管理多个对象间的交互过程和顺序”的是: (A)生成器模式(B) 门面模式(C) 策略模式(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. “不要和陌生人说话”是( )原则的通俗表述

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

一、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.什么是设计模式?设计模式目标是什么? 答:设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解,保证代码可靠性。 2.设计模式中一般都遵循的原则有什么? 答:开闭原则、根据场景进行设计原则、优先组合原则、包容变化原则 3.“Gang of Four”针对“创建优秀面向对象设计”建议了哪些策略? 答:针对接口编程、优先使用对象组合而不是类继承,找到并封装变化点。 4.面向对象系统中功能复用的两种最常用技术是什么? 答:类继承和对象组合,类继承允许你根据其他类的实现来定义一个类的实现。父类的部细节对子类可见。类继承是在编译时刻静态定义的,且可直接使用,类继承可以较方便地改变被复用的实现。对象组合是类继承之外的另一种复用选择。新的更复杂的功能可以通过组装或组合对象来获得。对象组合要求被组合的对象具有良好定义的接口。 5.只根据抽象类中定义的接口来操纵对象有什么好处? 答:1) 客户无须知道他们使用对象的特定类型,只须对象有客户所期望的接口。 2) 客户无须知道他们使用的对象是用什么类来实现的,他们只须知道定义接口的抽象类。 五、应用题(分值15) 公司架构:经理、工程师、技师和后勤人员都是公司的雇员,经理管理工程师、技师和后勤人员。高层经理领导较低级别的经理。典型层次图如下:可以使用哪种设计模式实现公司的层级关系?并说明为什么? 组合模式,第一,其公司关系架构为树形结构;第二,其表示了部分-整体关系(自己扩展)

2019年上半年软件设计师上午试题及答案

2019 年上半年软件设计师上午试题及答案 1.计算机执行指令的过程中,需要由()产生每条指令的操作信号并将信号送往相应的部件进行处理,以完成指定的操作。 A.CPU的控制器 B.CPU的运算器 C.DMA控制器 D.Cache控制器 2.DMA控制方式是在()之间直接建立数据通路进行数据的交换处理。 A.CPU与主存 B.CPU与外设 C.主存与外设 D.外设与外设 3.CPU访问存储器时,被访问数据一般聚集在一个较小的连续存储区域中。若一个存储单元已被访问,则其邻近的存储单元有可能还要被访问,该特性被称为() A.数据局部性 B.指令局部性 C.空间局部性 D.时间局部性 4.某系统由 3 个部件构成,每个部件的千小时可靠度都为R,该系统的千小时可靠度为(1- (1-R)2)R,则该系统的构成方式是()。 A. 3 个部件串联

B. 3 个部件并联 C.前两个部件并联后与第三个部件串联 D.第一个部件与后两个部件并联构成的子系统串联 5.在()校验方法中, 采用模 2 运算来构造校验位。 A.水平奇偶 B.垂直奇偶 C.海明码 D.循环冗余 6.以下关于RISC (精简指令系统计算机)技术的叙述中,错误的是()。 A.指令长度固定、指令种类尽量少 B.指令功能强大、寻址方式复杂多样 C.增加寄存器数目以减少访存次数 D.用硬布线电路实现指令解码,快速完成指令译码 7.()防火墙是内部网和外部网的隔离点, 它可对应用层的通信数据流进行监控和过滤。 A.包过滤 B.应用级网关 C.数据库 D.WEB 8.下述协议中与安全电子邮箱服务无关的是()。 A.SSL

设计模式题库

1.设计模式的原理? (C) C. 面向接口编程 2. 以下对"开-闭"原则的一些描述错误的是?(A) A. "开-闭"原则与"对可变性的封装原则"没有相似性. 3.以下属于创建型模式是? (A) (生成器) C. PROTOTYPE(原型)(单件) 4.以下属于结构型模式是? (D) COMPOSITE(组合) B. ADAPTER(适配器) B.FLYWEIGHT(享元) 5.以下属于行为型模式是? (D ) https://www.wendangku.net/doc/f011776866.html,MAND(命令) 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.将对象组合成树形结构以表示“部分-整体”的层次结构。 14.以下意图那个是用来描述DECORATOR(装饰)?(D) 动态地给一个对象添加一些额外的职责。 15.以下意图那个是用来描述 FACADE(外观)?(A) A.为子系统中的一组接口提供一个一致的界面,本模式定义了一个高层接口,这个接 口使得这一子系统更加容易使用。 16.以下意图那个是用来描述FLYWEIGHT(享元)?(B) B.运用共享技术有效地支持大量细粒度的对象。 17.以下意图那个是用来描述 PROXY(代理)?(C) C.为其他对象提供一种代理以控制对这个对象的访问。 18.以下意图那个是用来描述CHAIN OF RESPONSIBILITY(职责链)?(D) D.使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。 19.以下意图那个是用来描述 COMMAND(命令)?(A) A.将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作 20.以下意图那个是用来描述 INTERPRETER(解释器)?(B) B.给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 21.以下意图那个是用来描述 ITERATOR(迭代器)?(C) 。 C.提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。

相关文档