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

合集下载

【东大】20秋学期《软件设计模式》在线平时作业3答案

【东大】20秋学期《软件设计模式》在线平时作业3答案

20秋学期《软件设计模式》在线平时作业3
学校:东北大学学期:2020年秋季
一、单选题 (共 10 道试题,共 50 分)
1.C#中每个int 类型的变量占用_______个字节的内存。

A.1
B.2
C.4
D.8
[本题正确选择]:C
2.while语句循环语句结构和do…while语句循环结构的区别在于:
A.while语句的执行效率比较高
B.do…while语句编写程序较为复杂
C.do…while循环是先执行循环体,后判定条件表达式是否成立,而while语句是先判定条件表达式,再决定是否执行循环体
D.无论条件是否成立,while语句都要执行一次循环体
[本题正确选择]:C
3.如有定义:
class class1
{
Public virtual void test(){}
}
Class class2: class1
{
Public overrice void test()
{
Console.Write(“class2”);
}
}
Class class3: class2
{
Public override void test()
{
Console.Write(“class3”);
}
}
则下列语句的输出是什么?
Class2 x = new class3(); x.test();
A.class3 class2
B.class3
C.class2 class3。

软件设计师考试题型

软件设计师考试题型

软件设计师考试题型一、在软件设计过程中,以下哪个阶段主要负责确定系统的功能及性能需求?A. 需求分析B. 系统设计C. 编码实现D. 测试与维护(答案:A)二、以下哪种设计模式主要用于创建一个对象的唯一实例,并确保整个系统中只有一个该对象的实例?A. 工厂模式B. 单例模式C. 观察者模式D. 策略模式(答案:B)三、在数据库设计中,用于描述数据实体及其之间关系的是?A. 数据流图B. E-R图(实体-关系图)C. 状态转换图D. 用例图(答案:B)四、关于软件测试,下列哪一项描述是不正确的?A. 单元测试是对单个模块或组件进行的测试B. 集成测试是在单元测试之后,对多个模块组合进行测试C. 系统测试是验证整个系统是否满足用户需求D. 验收测试由开发团队内部完成,以确保软件质量(答案:D)五、在面向对象编程中,继承机制的主要作用是?A. 实现代码复用和多态性B. 提高程序的执行效率C. 简化数据结构的定义D. 增强程序的安全性(答案:A)六、下列哪一项不是敏捷开发宣言中强调的价值?A. 个体与交互重于流程和工具B. 可以工作的软件重于详尽的文档C. 客户合作重于合同谈判D. 严格遵循计划重于响应变化(答案:D)七、在软件项目管理中,用于估算项目成本、时间和资源的一种常用技术是?A. PERT图B. 甘特图C. 功能点分析D. 用例点分析(答案:C)(注:虽然用例点分析也是估算方法,但功能点分析更为常用作为此题答案)八、关于软件架构风格,以下哪种风格最适合需要高度可扩展性和灵活性的系统?A. 分层架构B. 微服务架构C. 客户端-服务器架构D. 管道-过滤器架构(答案:B)。

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

软件设计模式与应用实例考核试卷
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. 设计模式的概念及分类设计模式是指在软件设计中常见的问题,并提供了相应的解决方案。

根据其目的和使用方式,设计模式可以分为三类:创建型模式、结构型模式和行为型模式。

- 创建型模式:主要关注对象的创建过程,包括简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式和原型模式。

- 结构型模式:主要关注对象之间的组合关系,包括适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式和享元模式。

- 行为型模式:主要关注对象之间的通信和协作方式,包括策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式和解释器模式。

2. 设计模式的使用场景设计模式可以在特定的场景中被应用,以解决相应的问题。

- 简单工厂模式:当需要根据输入参数来决定创建哪个具体对象时,可以使用简单工厂模式。

- 观察者模式:当一个对象的改变需要通知其他对象进行相应处理时,可以使用观察者模式。

- 模板方法模式:当要定义一组算法中的某个步骤,并且允许子类为该步骤提供实现细节时,可以使用模板方法模式。

- 代理模式:当需要为一个对象提供一个代理,以控制对象的访问时,可以使用代理模式。

- 中介者模式:当多个对象之间的交互需要进行解耦时,可以使用中介者模式。

3. 题目与答案以下是一些与软件设计模式与应用相关的题目,附带了答案供读者参考。

题目一:简述工厂方法模式的原理及应用场景。

答案一:工厂方法模式是一种创建型模式,它通过定义一个用于创建对象的接口,由子类决定具体实例化的对象类型。

工厂方法模式可以在不暴露具体创建逻辑的情况下,实现对象的实例化。

软件设计架构试卷试题(附答案)

软件设计架构试卷试题(附答案)

一、选择题(每题2分,共24分)1.以下关于构造函数的说法,其中错误的是( B )A.构造函数的函数名必须与类名相同B.构造函数可以指定返回类型C.构造函数可以带有参数D.构造函数可以重载2.类的构造函数是在( B )调用的。

A. 类创建时B. 创建对象时C. 删除对象时D. 不自动调用3.在以下关于方法重载的说法,其中错误的是( D )A.方法可以通过指定不同的返回值类型实现重载B.方法可以通过指定不同的参数个数实现重载C.方法可以通过指定不同的参数类型实现重载D.方法可以通过指定不同的参数顺序实现重载4.在定义类时,如果希望类的某个方法能够在派生类中进一步进行改进,以处理不同的派生类的需要,则应该将该方法声明为( D )A.sealedB.publicC.virtualD.override5.( D )表示了对象间的is-a的关系。

A. 组合B. 引用C. 聚合D. 继承6.关于单一职责原则,以下叙述错误的是( C )。

A.一个类只负责一个功能领域中的相应职责B.就一个类而言,应该有且权有一个引起它变化的原因C.一个类承担的职责越多,越容易复用,被复用的可能性越大D.一个类承担的职责过多时需要将职责进行分离,将不同的职责封装在不同的类中7.某系统通过使用配置文件,可以在不修改源代码的情况下更换数据库驱动程序,该系统满足( B )A. 里氏代换原则B. 接口隔离原则C. 单一职责原则D. 开闭原则8.一个软件实体应尽可能少地与其他软件实体发生相互作用,这样,当一个模块修改时,就会尽量少的影响其他模块,扩展会相对容易。

这是( A )的定义。

A. 迪米特法则B. 接口隔离原则C. 里氏代换原则D. 合成复用原则9.当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用( A )模式。

A.创建型B.结构型 C行为型 D.以上都可以10.在观察者模式中,表述错误的是( C )A.观察者角色的更新是被动的。

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

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

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 )原则的典型应用。

东北大学《软件设计模式》期末考试必备真题集(含答案)22

东北大学《软件设计模式》期末考试必备真题集(含答案)22

一:单选题1.在c#程序中,入口函数的正确声明为:BA. static int main(){…..}B. static void Main(){……}void main(){……}Main(){……}2.在C#中,表示一个字符串的变量应使用以下哪条语句定义?BA. CString str;B. string str;C. Dim str as stringD. char * str;3.结构化程序设计的3种结构是:DA. 顺序结构、if结构、for结构B. if结构、if…else结构、else if结构C. while结构、do…while结构、foreach结构D. 顺序结构、分支结构、循环结构4.能正确表示逻辑关系“a>=10 或a<=0”的C#语言表达式是____。

DA. a>=10 or a<=0B. a>=10|a<=0C. a>=10&&a<=0D. a>=10||a<=05.在类的外部可以被访问的成员是:AA. public成员B. private成员C. protected成员D. protected internal成员6.在定义类时,如果希望类的某个方法能够在派生类中进一步进行改进,以处理不同的派生类的需要,则应将该方法声明成_________。

CA. sealed 方法B. public 方法C. visual 方法D. override 方法7.关于结构类型,下列说法哪些是正确的?AA. 结构是值类型B. 结构中不允许定义带参数的实例构造函数;C. 结构中不允许定义析构函数D. 结构中可以定义成员方法,但是方法内不能使用this 指针8.下面是几条动态初始化二维数组的语句,指出其中正确的:DA. int arr5[][]=new int[4,5];B. int[][] arr6 = new int[4, 5];C. int arr7[,]=new int[4,5];D. int[,] arr8=new int[4,5];9.下面有关析构函数的说法中,不正确的是:DA. 析构函数中不可以包含return语句B. 一个类中只能有一个析构函数C. 析构函数在对象被撤销时,被自动调用D. 用户可以定义有参析构函数10.下列说法哪个正确?BA. 不需要定义类,就能创建对象B. 属性可以定义为抽象的C. 对象中必须有属性和方法D. 常量不能作为类成员11.下面有关静态方法的描述中,正确的是:CA. 静态方法属于类,不属于实例B. 静态方法可以直接用类名调用C. 静态方法中,可以访问非静态的局部变量D. 静态方法中,可以访问静态的变量12.以下描述错误的是()AA.在C++中支持抽象类,但在C#中不支持抽象类。

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

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

A 接口 B 继承机制 C 对象组合 D 委托
4. 下面的类图表示的是哪个设计模式?( )。
A 抽象工厂模式(Abstract Factory) B 观察者模式(Observer)
C 策略模式(Strategies)
D 桥接模式(Bridge)
5. Bridge(桥接)模式的意图是( )。
A. 希望简化现有系统的使用方法。你需要定义自己的借口。 B.将一个无法控制的现有对象与一个特定借口相 匹配。 C. 将一组实现部分从另一组使用它们的对象中分离出来。 D.你需要为特定的客户(或情况)提供特定系列的 对象。
2. Adapter 模式的最常见的用法是什么?该模式可以使你不用操心什么方面?
Adapter 模式最通常的用途就是保持多态。Adapter 模式让我们在进行设计时不必再担心现存类的接口问题。 3. Adapter 模式问题的解决方案以及如何实现?
解决方案是 Adapter 模式用我们需要的接口对无法修改的类进行包装。实现:将现存的类包含在另一个类之中。
3. 类 Adapter 模式
当实现 Adapter 模式的方法是使用多重继承。在这种情况下,它被成为类 Adapter 模式。 4. 多态
相关的对象按照各自类型来实现方法的能力。 五. 简答题 1. 给出 Adapter 模式的定义及意图。
意图是将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使原本由于接口不兼容而不能一起工作 的那些类可以一起工作。
B.对象组合与类的继承
C.系统架构与系统开发
D.系统复用与系统扩展
4. 以下哪些问题通过应用设计模式不能够解决 。()
A)指定对象的接口
B)针对接口编程
C)确定软件的功能都正确实现
D)设计应支持变化
二.填空
1. 模式的基本要素包括名称、意图、问题、解决方案、参与者和协作者、(效果)、实现、GoF 参考。
2. 设计模式基本原则包括:开闭原则,(从场景进行设计的原则),包容变化原则。
3. 设计模式是一个(抽象)的方案,它可以解决一类问题。
4. 1. 在设计模式群体中,效果是指(原因和结果)。三. 判断
1. 适配器模式属于创建型模式。错
2. 在设计模式中,“效果”只是指“原因和结果”。 对
3. 设计模式使代码编制不能真正工程化。错
承本质上是“白盒复用”,对父类的修改,不会影响到子类。
2. 在不破坏类封装性的基础上,使得类可以同不曾估计到的系统进行交互。主要体现在( )。
A 外观模式(Facade)
B 装饰模式(Decorator)
C 策略模式(Strategies)
D 桥接模式(Bridge)
3. 行为类模式使用( )在类间分派行为。
Façade 向客户展现使用现有系统的一个新的接口。如何实现:定义一个(或一组)新的类来封装所需的接口。 让新的类使用现有的系统。
2. 请简要说明在一个复杂系统中应用 Façade(外观)模式的优点。 当拥有一个复杂的系统时,Façade(外观)模 式使我们只需要使用它的一部分功能。最终我们将得到一个更简
3. 设计模式中一般都遵循的原则有什么?
开-闭原则,根据场景进行设计原则,优先组合原则,包容变化原则。
4. 四人团针对“创建优秀面向对象设计”建议了哪些策略?
针对接口编程,优先使用对象组合而不是类继承,找到并封装变化点。 第 6 章 facade(外观)模式
一.选择
1. 外观模式的作用是()。A.当不能采用生成子类的方法进行扩充时,动态地给一个对象添加一些
单,更容易使用的或根据我们的需要定制的系统。 3. Façade 模式的意图是什么?
望那个简化现有系统的使用方法,需要定义自己的接口。 4. 在 Facade 模式中,客户是如何使用子系统的?
六.应用题
1. 请论述在一个系统中应用 Façade(外观)模式的必要性,并给出一种解决方案。 Façade(外观)模式不仅可以 为方法调用创建更简单的接口,还可以减少客户必须处理的对象数量。举个例子。
D)结构型模式可以在不破坏类封装性的基础上,使得类可以同不曾估计到的系统进行交互。 二. 填空 1. 适配器模式,分为类的适配器和对象的适配器两种实现。其中类的适配器采用的是继承关系,而对象适配器采 用的是(组合聚合)关系。 2. Adapter 模式有两种类型有 :对象 Adapter 模式、(类 Adapter 模式)。 3. UML 是一种用来创建(程序模型)的图像语言。
第 7 章 Adapter(适配器)模式 一. 选择
1. Adapter(适配器)模式的意图是()。
A. 希望简化现有系统的使用方法。你需要定义自己的借口。 B.将一个无法控制的现有对象与 一个特定借口相匹配。 C. 将一组实现部分从另一组使用它们的对象中分离出来。 D.你需要为特定的客户(或情况) 提供特定系列的对象。 2. 下面不属于创建型模式的有()。
4. 设计模式的两大主题是系统复用与系统扩展。对 四. 名词解释
1. 设计模式
是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、
让代码更容易被他人理解、保证代码可靠性。
2. 模板
模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 3. 模式
就是解决某一类问题的方法论。把解决某类问题的方法总结归纳到理论高度,那就是模式。
4. Adapter 模式不是必须针对某个接口进行设计。错 四.名词解释 1. Adapter 模式
将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使原本由于接口不兼容而不能一起工作的那些 类可以一起工作。
2. 对象 Adapter 模式
使用 Adapter 模式与适当的抽象类相匹配,它通常依赖于一个对象(适配对象)包含另一个对象(被适配对象)。
4. Façade 外观模式只能为方法调用创建更简单的接口,不能减少客户必须处理的对象数量。错 四. 名词解释 1. Façade 模式模式定义了一个高层接口,使得这一子系统更加容易使用,为子系统中的一组接口提供一个一
致的界面。 2. 接口
包含了一系列不被实现的方法,而把这些方法的实现交给继承它的类。 3. 组合 一个类是另一个类的组成成分。 4. 耦合度 对模块间关联程度的度量。 五.简答 题 1. Façade(外观)模式解决问题的方案是什么? 如何实现?
第 9 章 Bridge(桥接)模式 一.选

1. 关于继承表述错误的是:( )。A.继承是一种通过扩展一个已有对象的实现,从而获得新功能的
复用方法。 B.超类可以显式地捕获那些公共的属性和方法。子类则通过附加属性和方法来进行
实现的扩展。 C.在一定意义上说破坏了封装性,因为这会将父类的实现细节暴露给子类。 D.继
4. 内聚度
模块内部各成分彼此结合的紧密程度。 五.简答

1. 什么是设计模式?设计模式的目标是什么?设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码 设计经验的总结。使用设计模式是为了可
重用代码、让代码更容易被他人理解、保证代码可靠性。
2. 设计模式的基本要素有哪些?
名称,意图,问题,解决方案,参与者和协作者,效果,实现,GOF 参考。
假设有一个 Client 对象,这个对象必须处理 Database、Model、Element 类的对象。Client 必须首先通过 Database 对象打开数据库,以得到一个对 Model 对象的引用,然后再向 Model 对象请求一个 Element 对象,最后向 Element 对象查询所需的信息。而如果能创建一个 DatabaseFacade 类,让 Client 对象向它发出请求,那么上面的过程可能 就会变得简单一些。 2. 请举例说明 Facade 模式和 Adapter 模式使用场景的差异,并说明它们的解决方案及表现的特点。
额外的功能。 B.为了系统中的一组功能调用提供一个一致的接口,这个接口使得这一子系统更
加容易使用。
C.保证一个类仅有一个实例,并提供一个访问他的全局访问点。 D.在方法中定义算法的框架, 而将算法中的一些操作步骤延迟到子类中实现。
2. Façade(外观)模式的意图是()。
A. 希望简化现有系统的使用方法,你需要定义自己的接口。 B. 将一个无法控制的现有对象与一个特定借口相匹配。 C. 将一组实现部分从另一组使用它们的对象中分离出来。 D.你需要为特定的客户(或情况) 提供特定系列的对象。 3. ()模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
1. Facade 模式可以用来(隐藏)系统。该模式能够将系统作为自己的私有成员包含进来。
2. Façade 模式要解决的问题:只需要使用一个复杂系统的一个(子集)。或者,需要用一种特殊的方式与系统交互。
3. Façade 模式不仅可以为方法调用创建更(简单)的接口,还可以减少客户必须处理的对象数量。
4. (Adapter 适配器)模式使原本接口不兼容而不能一起工作的类可以一起工作。
5. 适配器模式,分为类的适配器和对象的适配器两种实现。其中类的适配器采用的是(继承)关系,而对象适配 器采用的是组合聚类关系。 三.判断
1. 对象适配器模式是合成聚合复用原则的典型应用。对
2. Adapter 模式使原本由于接口不兼容而不能一起工作的那些类可以一起工作。对 3. Façade 模式和 Adapter 模式是相同类型的包装器。错
越好,目的是针对一个现有的接口进行设计,并不能简化任何东西,即使可能有另一个更简单的接口。总之,在实
际应用中,Façade 模式简化接口,而 Adapter 模式将接口转换成另一个现有的接口。
2. 请说明什么是 Adapter 模式,Adapter 模式有哪几种形式?请举例说明?
第 8 章 扩展我们的视野
相关文档
最新文档