第3章创建型模式实训

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

第3章 创建型模式实训

实训练习

3.3.2 填空题

1. 某系统提供一个简单计算器,具有简单的加法和减法功能,系统可以根据用户的选择实例化相应的操作类。现使用简单工厂模式设计该系统,类图如图1所示:

Calculator

+createOperation (char operator)...

Operation

{abstract}

##numberA numberB : int : int +++++

getResult ()getNumberA ()

setNumberA (int numberA)getNumberB ()

setNumberB (int numberB)...

: int : int : void : int : void

AddOperation +getResult ()...

: int SubOperation +getResult ()...

: int 图1 类图

在图1中,Operation 是抽象类,其中定义了抽象方法getResult()

,其子类AddOperation 用于实现加法操作,SubOperation 用于实现减法操作,Calculator 是简单工厂类,工厂方法为createOperation(),该方法接收一个char 类型的字符参数,如果传入的参数为“+”,工厂方法返回一个AddOperation 类型的对象,如果传入的参数为“-”,则返回一个SubOperation 类型的对象。 表格中的数据转换成XML 格式。为了让系统具有更好的扩展性,在未来支持新类型的数据源,开发人员使用工厂方法模式设计该转换工具的核心类。在工厂类中封装了具体转换类的初始化和创建过程,客户端只需使用工厂类即可获得具体的转换类对象,再调用其相应方法实现数据转换操作。其类图如图1所示:

DBConvertorCreator +getConvertor ()

...TXTConvertorCreator

+getConvertor ()

...

DBConvertor

+transform ()

...

TXTConvertor

+transform ()

...

ConvertorCreator +getConvertor () ...

Convertor

+transform ()

...

图1 类图

在图1中,ConvertorCreator是抽象工厂接口,它声明了工厂方法getConvertor(),在其子类中实现该方法,用于创建具体的转换对象;Convertor是抽象产品接口,它声明了抽象数据转换方法transform(),在其子类中实现该方法,用于完成具体的数据转换操作。类DBConvertor和TXTConvertor分别用于将数据库中的数据和txt文件中的数据转换为XML格式。

开闭原则 B. 依赖倒转原则 C. 接口隔离原则 D. 单一职责原则 E. 合成复用原则

3. 某手机游戏软件公司欲推出一款新的游戏软件,该软件能够支持Symbian 、Android 和Windows Mobile 等多个主流的手机操作系统平台,针对不同的手机操作系统,该游戏软件提供了不同的游戏操作控制类和游戏界面控制类,并提供相应的工厂类来封装这些类的初始化。软件要求具有较好的扩展性以支持新的操作系统平台,为了满足上述需求,采用抽象工厂模式进行设计所得类图如图1所示:

SymbianFactory ++getOperationController ()getInterfaceController ()...

AndroidFactory ++getOperationController ()getInterfaceController ()...

SymbianOperationController AndroidOperationController

AbstractFactory

++getOperationController ()getInterfaceController ()...

OperationController

InterfaceController

SymbianInterfaceController AndroidInterfaceController

图1 类图

在该设计方案中,具体工厂类如SymbianFactory 用于创建Symbian 操作系统平台下的游戏操作控制类SymbianOperationController 和游戏界面控制类SymbianInterfaceController ,再通过它们的业务方法来实现对游戏软件的初始化和运行控制。 【Java 代码】

某软件公司欲开发一个音频和视频播放软件,为了给用户使用提供方便,该播放软件提供了多种界面显示模式,如完整模式、精简模式、记忆模式、网络模式等。在不同的显示模式下主界面的组成元素有所差异,如在完整模式下将显示菜单、播放列表、主窗口、控制条等,在精简模式下只显示主窗口和控制条,而在记忆模式下将显示主窗口、控制条、收藏列表等。现使用建造者模式设计该软件,所得类图如图1所示:

图1 类图

在该设计方案中,MainScreen是播放器的主界面,它是一个复合对象,包括菜单、播放列表、主窗口和控制条等成员。ModeBuilder是一个抽象类,定义了一组抽象方法buildXXX()用于逐步构造一个完整的MainScreen对象,getScreen()是工厂方法,用于返回一个构造好的MainScreen对象。ScreenModeController 充当指挥者,用于指导复合对象的创建,其中construct()方法封装了具体创建流程,并向客户类返回完整的产品对象。

数据,可以通过界面的“复制”按钮将该图表复制一份,复制后可以得到新的图表对象,用户可以修改新

相关文档
最新文档