第3章创建型模式实训.doc_第1页
第3章创建型模式实训.doc_第2页
第3章创建型模式实训.doc_第3页
第3章创建型模式实训.doc_第4页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、r)图i类图在图1中,Operation是抽象类,其中定义了抽象方法getResult0 其子类AddOperation .H P实现加法操作,SubOperation用实现减法操作,Calculator是简单工厂类,工厂方法为createOperationO ,该方法接收一个ch类型的字符参数如果传入的参数为 ”,工厂方法返回一个AddOperation类型的对象,如果 传入的参数为,则返回一个SubOperation类型的对象。Java代码】 abstract class Operati onprotected int nu mberA:protected int nu mberB:某软件

3、公司欲开发一个数据格式转换工具, 可以将不同数据源如七毗文件、数据库、Excel表格中的数据转换成XML格式。为了让系统具有更好的扩展性,在未來支持新类型的数据源,开发人员使用工厂方法模式设计该转换工具的 核心类。在工厂类中封装了具体转换类的初始化和创建过程,客户端只需使用工厂类即可获得具体的转换类对象,再调用其相 应方法实现数据转换操作。其类图如图 1所示:图1类图在图1中,ConvertorCreator是抽象TJ接口,它声明了工厂方法getConvertor() 在其子类中实现该方海用于创建具体的转换对象:Convertor是抽象产品接口,它声明了抽象数据转换方法transform。,在

4、其子类中实现该方法,用于完成具体的数据转换操作。类DBConvertor和TXTConvertor分别用于将数据库中的数据和txt文件中的数据转换为XML格式。【Java代码】in terface Con vertorCreatorin terface Con vertorpublic String tran 3form():cla33 DBCon vertorCreator impleme nt3 Con vertorCreatorpublic Con vertor getC on vertor0(2):cla33 TXTC on vertorCreator impleme nt3 Con

5、vertorCreator 开闭原则B.依赖倒转原则C.接口隔离原则D.单一职资原则E.合成复用原则3.某于机游戏软件公司欲推出一款新的游戏软件,该软件能够支持Symbian、Android和Findo陀Mobile等多个主流的手机操作系统平台,针对不同的手机操作系统,该游戏软件提供了不同的游戏操作控制类和游戏界面控制类,并提供相应的工厂类来封装这些类的初始化。软件要求具有较好的扩展性以支持新的操作系统平台,为了满 足上述需求,采用抽象工厂模式进行设计所得类图如图1所示: tctexctia aC& tzoller 0 tctlzterftccC at, txolleria draidTact

6、errla tcrfxceC az aO psrat ecXos troller*n droldSnxtl coCan roller I& tcrf&eeC 4& txollerSorbic nln terffcceC at, txollerAs xrexil ntezf&ceC g trailerCerati ecXea troller xctOycxGtis zCifi txoLler 1- jet Zn teroecjldUi nTin D:eb. buildC a& ?roLSar(: zcturn ab.(ctSrec b():abstract;* screen MainScreen

7、-=nerMainSre+ buildXenu ():void+ buildPlayList 0:void* buildXainWindaT ():void* buildControlBar ():void+ EetScreen ():MainScreenFullMo-deBuilderS lap leYodeBdi Ider* buildXerrj ()* buildPlaylist ):+ buildXenu ():voidvoid4buildPlayList ():voidvoid4buildXainWindor0:void4buildControlBar0:void图1类图在该设计方案

8、中 Main Scree n是播放器的主界面,它是一个复合对象,包括菜单、播放列表.主窗口和控制条等成员。 ModeBuilder是一个抽象类,定义了一组抽象方法buildXXX0用于逐步构造一个完整的MainScreen 对象,getScreenO是工丿方法,用 J返回个构造好的MainScreen 对象。ScreenModeController充当指挥者,用于指导复合对象的创建,其中construct()方法封装了具休创建流程,并向客户类返回完整的产品对象。Java代码】class Main Scree npublic String menu:public String playLi3t:

9、public String mainWin dow: public String controlBar:(1class ModeBuilderprotected Main Scree n scree n = new Main Scree n():public abstract void buildMe nu 0:public abstract void buildPlayLi3to :public abstract void buildMa inWin dow():public abstract void buildC on trolBar():public Main Scree n getS

10、cree n() (2) : class FulIModeBuiIder exte nds ModeBuilderpublic void buildMe nu() 某数据处理软件需要增加一个图表复制功能,在图表对象中包含一个数据集对象.用于封装待显示的 数据,可以通过界面 的“复制”按钮将该图表复制一份,复制后可以得到新的图表对象,用户可以修改新1所示:图表的编号、颜色和数据。现使用原空模式设计该软件,所得类图如图4DataChart-ds: DataSetcolor : Colorno : int4 setDataSet (DataSet ds)void setColor (Color co

11、lor)void 3etNo (int no)void getDataSet ()DataSet getColor 0Color getNo ()int4 display ()void deepCl one ()Object图1类图DataSet 对1在该设计方案中,DataChart类包含一个DataSet对象,右:复制DataChart对象的同时将复制 象,因此需要使用深克隆技术,可使用流来实现深克隆。代码】import *;class DataSet implenie nts SerializableJ为了避免监控数据显示不一致并节省系统资源.在某监控系统的设计方案中提供了一个主控中心类

12、,该主控中心类使用单例模式进行设计,类图如图1所示:Mai nCon trollerCe ntermenu:Me nu-xb:ToolBarmf:Mai nF ormmcc:Mai nCo ntrollerCe nter-MainContro11erCenter ()-init 0 load () destroy () getI nsta nee ()voidvoidvoidXai nCon trollerCe nter图1类图在图1中,主控中心类MainControllerCenter是单例类,它包含一系列成员对象并可以初始化、显示和销毁成员对象,对应的方法分别为init() loadO和d

13、estroy。,此外还提供了静态工丿方法getlnstanceO JTJ J创建MainControllerCenter类型的单例对象。【Jz代码】class MainCon trollerCe nterprivate Menu xenu:3. 3. 3使用简单工厂模式模拟女姻Na)ig A (Person),如果传入参数“ M ”则返回一个畑对象,如果传入参数,则返回一个和对象,用Java语言实现该场景。现需要增加一个新的Robot类,如果传入参数“ R”则返回一个Robot对象,对代码进行修改并注意“女娱”的变化。2. 现需要设计一个程序来读取多种不同类型的图片格式,针对每一种图片格式都设

14、计一个图片读取器(PageReader),女口 GIF图片读取器fReader)用于读取GIF格式的图片、JPG图片读取器 (JpgReader用读取JPG格式的图片。图片读取器对象通过图片读取器匸I ImageReaderFactory來创建,IznagQReadQrFactory是 一个抽彖类.用于定义创建图片读取器的工厂方迄 其子类GifReaderFactory和JpgReaderFactory用于创建具体的图片读取器对象。使用工厂方法模式实现该程序的设计。3 计算机包含内存(RAM)、CPU等硬件设备,根据下面的“产品等级结构产品族”示意图,使用抽象工厂模式实现计算机设备创建过程并绘制相应的类图。产品族一个产品族,/Pc PcRAMI 1/ PcCPUMac MacCPU MacRAMCPURAM产口口等级结构4.电脑组装工厂可以将CPI;内存、硬盘、主机、显示器等硬件设备组装在一起构成一台完整的电脑.且构成的电脑可以是笔记木,也可以是台式机,还可以是不提供显示

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论