第3章创建型模式实训

上传人:笛音 文档编号:15936771 上传时间:2017-09-05 格式:PDF 页数:13 大小:154.63KB
返回 下载 相关 举报
第3章创建型模式实训_第1页
第1页 / 共13页
第3章创建型模式实训_第2页
第2页 / 共13页
第3章创建型模式实训_第3页
第3页 / 共13页
第3章创建型模式实训_第4页
第4页 / 共13页
第3章创建型模式实训_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《第3章创建型模式实训》由会员分享,可在线阅读,更多相关《第3章创建型模式实训(13页珍藏版)》请在金锄头文库上搜索。

1、第 3 章 创建型模式实训3.3 实训练习3.3.2 填空题1. 某系统提供一个简单计算器,具有简单的加法和减法功能,系统可以根据用户的选择实例化相应的操作类。现使用简单工厂模式设计该系统,类图如图 1 所示:Calculator+ createOperation (char operator).Operationabstract #numberAnumberB: int: int+getResult ()getNumberA ()setNumberA (int numberA)getNumberB ()setNumberB (int numberB).: int: int: void: in

2、t: voidAddOperation+ getResult ().: intSubOperation+ getResult ().: int图 1 类图在图 1 中, Operation 是抽象类,其中定义了抽象方法 getResult(),其子类 AddOperation 用于实现加法操作, SubOperation 用于实现减法操作, Calculator 是简单工厂类,工厂方法为 createOperation(),该方法接收一个 char 类型的字符参数,如果传入的参数为“ +” ,工厂方法返回一个 AddOperation 类型的对象,如果传入的参数为“ -” ,则返回一个 Sub

3、Operation 类型的对象。【 Java代码】abstract class Operation protected int numberA; protected int numberB; / numberA 和 numberB 的 Setter 方法和 Getter 方法省略public (1) int getResult(); class AddOperation extends Operation public int getResult() return numberA + numberB; class SubOperation extends Operation public in

4、t getResult() return numberA - numberB; class Calculator public (2) createOperation(char operator) Operation op = null; (3) case +: op = (4) ; break; case -: op = (5) ; break; (6) ; class Test public static void main(String args) int result; Operation op1 = Calculator.createOperation(+); op1.setNumb

5、erA(20); op1.setNumberB(10); result = (7) ; System.out.println(result); 2. 某软件公司欲开发一个数据格式转换工具,可以将不同数据源如 txt 文件、数据库、 Excel 表格中的数据转换成 XML 格式。为了让系统具有更好的扩展性,在未来支持新类型的数据源,开发人员使用工厂方法模式设计该转换工具的核心类。在工厂类中封装了具体转换类的初始化和创建过程,客户端只需使用工厂类即可获得具体的转换类对象,再调用其相应方法实现数据转换操作。其类图如图 1 所示:DBConvertorCreator+ getConvertor ().

6、TXTConvertorCreator+ getConvertor ().DBConvertor+ transform ().TXTConvertor+ transform ().ConvertorCreator+ getConvertor ().Convertor+ transform ().图 1 类图在图 1 中, ConvertorCreator 是抽象工厂接口,它声明了工厂方法 getConvertor(),在其子类中实现该方法,用于创建具体的转换对象; Convertor 是抽象产品接口,它声明了抽象数据转换方法 transform() ,在其子类中实现该方法,用于完成具体的数据转

7、换操作。类 DBConvertor 和 TXTConvertor 分别用于将数据库中的数据和 txt 文件中的数据转换为 XML 格式。【 Java代码】interface ConvertorCreator (1) ; interface Convertor public String transform(); class DBConvertorCreator implements ConvertorCreator public Convertor getConvertor() (2) ; class TXTConvertorCreator implements ConvertorCreato

8、r public Convertor getConvertor() (3) ; class DBConvertor implements Convertor public String transform() /实现代码省略 class TXTConvertor implements Convertor public String transform() /实现代码省略 class Test public static void main(String args) ConvertorCreator creator; (4) ; creator = new DBConvertorCreator(

9、); convertor = (5) ; convertor.transform(); 如果需要针对一种新的数据源进行数据转换, 该系统至少需要增加 (6) 个类。工厂方法模式体现了以下哪些面向对象设计原则? (7) 。 (多选)A. 开闭原则 B. 依赖倒转原则 C. 接口隔离原则 D. 单一职责原则 E. 合成复用原则3. 某手机游戏软件公司欲推出一款新的游戏软件,该软件能够支持 Symbian、 Android 和 Windows Mobile 等多个主流的手机操作系统平台,针对不同的手机操作系统,该游戏软件提供了不同的游戏操作控制类和游戏界面控制类,并提供相应的工厂类来封装这些类的初始

10、化。软件要求具有较好的扩展性以支持新的操作系统平台,为了满足上述需求,采用抽象工厂模式进行设计所得类图如图 1 所示:SymbianFactory+getOperationController ()getInterfaceController ().AndroidFactory+getOperationController ()getInterfaceController ().SymbianOperationController AndroidOperationControllerAbstractFactory+getOperationController ()getInterfaceCon

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

12、OperationController getOperationController(); public InterfaceController getInterfaceController(); interface OperationController public void init(); /其他方法声明省略 interface InterfaceController public void init(); /其他方法声明省略 class SymbianFactory implements AbstractFactory public OperationController getOpe

13、rationController() (1) ; public InterfaceController getInterfaceController() (2) ; class AndroidFactory (3) public OperationController getOperationController() return new AndroidOperationController(); public InterfaceController getInterfaceController() return new AndroidInterfaceController(); class

14、SymbianOperationController (4) public void init() /实现代码省略 /其他方法声明省略 class AndroidOperationController (5) public void init() /实现代码省略 /其他方法声明省略 class SymbianInterfaceController implements InterfaceController public void init() /实现代码省略 /其他方法声明省略 class AndroidInterfaceController implements InterfaceCont

15、roller public void init() /实现代码省略 /其他方法声明省略 class Test public static void main(String args) AbstractFactory af; (6) oc; (7) ic; af = new SymbianFactory(); oc = (8) ; ic = (9) ; oc.init(); ic.init(); 如何需要在上述设计方案中增加对 Windows Mobile 操作系统的支持,需对该设计方案进行哪些调整,简单说明实现过程。4. 某软件公司欲开发一个音频和视频播放软件,为了给用户使用提供方便,该播放软件提供了多种界面显示模式,如完整模式、精简模式、记忆模式、网络模式等。在不同的显示模式下主界面的组成元素有所差异,如在完整模式下将显示菜单、播放列表、主窗口、控制条等,在精简模式下只显示主窗口和控制条,而在记忆模式下将显示主窗口、控制条、收藏列表等。现使用建造者模式设计该软件,所得类图如图 1所示:mbScreenModeController- mb : ModeBuilder+setModeBuilder (ModeBuilder mb)construct ().: void: MainScreenM

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 其它文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号