软件设计模式(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.对象组合 、 类继承

word完美格式

专业资料

16.对象组合

17.对象组合 、 类继承 18.抽象类的指针

五、 简答题

1.答:设计模式按类型分为以下三类:

1) 创建型设计模式:以灵活的方式创建对象集合,用于管理对象的创建。 2) 结构型设计模式:将己有的代码集成到新的面向对象设计中,用于处理类或对象的组合。

3) 行为型设计模式:用于描述对类或对象怎样交互和怎样分配职责。

2.答: 设计模式的主要优点如下:

1) 设计模式融合了众多专家的经验,并以一种标准的形式供广大开发人员所用,它提供了一套通用的设计词汇和一种通用的语言以方便开发人员之间沟通和交流,使得设计方案更加通俗易懂。

2) 设计模式使人们可以更加简单方便地复用成功的设计和体系结构,将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。设计模式使得重用成功的设计更加容易,并避免那些导致不可重用的设计方案。

3) 设计模式使得设计方案更加灵活,且易于修改。

4) 设计模式的使用将提高软件系统的开发效率和软件质量,且在一定程度上节约设计成本。

5) 设计模式有助于初学者更深入地理解面向对象思想,一方面可以帮助初学者更加方便地阅读和学习现有类库与其他系统中的源代码,另一方面还可以提高软件的设计水平和代码质量。

3. 答:设计模式一般有如下几个基本要素:模式名称、问题、目的、解决方案、效果、实例代码和相关设计模式,其中的关键元素包括模式名称、问题、解决方案和效果。

4. 答:正确使用设计模式具有以下优点:

⑴ 可以提高程序员的思维能力、编程能力和设计能力。

⑵ 使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从而缩短软件的开发周期。

⑶ 使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强。

5. 答:根据类与类之间的耦合度从弱到强排列,UML中的类图有以下几种关系:依赖关系、关联关系、聚合关系、组合关系、泛化关系和实现关系。其中泛化和实现的耦合度相等,它们是最强的。

word完美格式

专业资料

6. 答:1)开闭原则(OCP):它要求软件实体应当对扩展开放,对修改关闭;

2) 里氏替换原则(LSP):它要求继承必须确保超类所拥有的性质在子类中仍然成立;

3) 依赖倒置原则(DIP):它要求软件设计要面向接口编程,不要面向实现编程;

4) 单一职责原则(SRP):它要求对象不应该承担太多职责,一个类应该有且仅有一个引起它变化的原因;

5) 接口隔离原则(ISP):它要求程序员尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法;

6) 迪米特法则(LoD):它要求如果两个软件实体无须直接通信,就不应当直接相互调用,而通过第三方转发该调用;

7) 合成复用原则(CRP):它要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。

第2章 创建型模式(上)

2.2 单例模式 2.3 原型模式

一、单选择题

1.( A ) 2.( B ) 3. ( A ) 4. ( D ) 5. ( C ) 6.( B ) 7. ( B )

二、多选择题

1.( C ) 2. ( A,B ) 3.( A、B ) 4. ( A、B、C ) 5.( A、C ) 6.( A、B、C、D ) 7.( A,B,C,D )

三、填空题

1.对象的创建、使用分离、耦合度 2.创建型 3.创建性

4.懒汉式单例 、 饿汉式单例 5. 抽象原型类 、 具体原型类

四、程序分析题解:本题使用了单例模式,参考类图如下所示:

word完美格式

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4