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

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

软件设计模式(J A V A)

习题答案

软件设计模式(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中的类图有以下几种关

系:依赖关系、关联关系、聚合关系、组合关系、泛化关系和实现关系。

其中泛化和实现的耦合度相等,它们是最强的。

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. 抽象原型类、具体原型类

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

五、简答题

1. 答:创建型模式分为以下几种:

⑴单例(Singleton)模式:某个类只能生成一个实例,该类

提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。

⑵原型(Prototype)模式:将一个对象作为原型,通过对其

进行复制而克隆出多个和原型类似的新实例。

⑶工厂方法(Factory Method)模式:定义一个用于创建产品

的接口,由子类决定生产什么产品。

⑷抽象工厂(Abstract Factory)模式:提供一个创建产品族

的接口,其每个子类可以生产一系列相关的产品。

⑸建造者(Builder)模式:将一个复杂对象分解成多个相对

简单的部分,然后根据不同需要分别创建它们,最后构建成该复杂对

象。

2.答:单例模式重点在于在整个系统上共享一些创建时较耗资源的对象。整个应用中只维护一个特定类实例,它被所有组件共同使用。ng.Runtime 是单例模式的经典例子。从Java 5开始你可以使用枚举(enum)来实现线程安全的单例。

3.答:单例(Singleton)模式的定义:指一个类只有一个实

例,且该类能自行创建这个实例的一种模式。

特点:1)单例类只有一个实例对象;2)该单例对象必须由单例类自行创建;3)单例类对外提供一个访问该单例的全局访问点。

应用场景:1)在某类只要求生成一个对象的时候;2)当对象需要被共享的场合;3)当某类需要频繁实例化,而创建的对象又频繁被销毁的时候。

相关文档
最新文档