实验4 适配器组合外观模式_第1页
实验4 适配器组合外观模式_第2页
实验4 适配器组合外观模式_第3页
实验4 适配器组合外观模式_第4页
实验4 适配器组合外观模式_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、实 验 报 告系 别班 级学 号姓 名时间地点20160418课程名称设计模式实验名称适配器、组合、外观实 验 过 程一实验目的与要求熟练使用适配器、组合、外观模式二实验设备微型计算机3 实验原理和实验内容1. 实验原理: 2. 实验内容:1) 某公司欲开发一款儿童玩具汽车,为了更好地吸引小朋友的注意力,该玩具汽车在移动过程中伴随着灯光闪烁和声音提示,在该公司以往的产品中已经实现了控制灯光闪烁和声音提示的程序,为了重用先前的代码并且使得汽车控制软件具有更好的灵活性和扩展性,使用适配器模式设计该系统,所得类图如下图所示。编程模式实现程序。2) 某公司的组织结构采用组合设计模式来设计,得到类图如下

2、。其中Company为抽象类,定义了在组织结构上添加(Add)和删除(Delete)部门的方法接口。类ConcreteCompany表示具体的公司,可以设置不同的部门。类HRDepartment和类FianceDepartment分别表示人力资源部和财务部。编程模拟实现。3) 某信息系统需要提供一个数据读取和报表显示模块,可以将来自不同类型文件中的数据转换成XML格式,并对数据进行统计和分析,然后以报表方式来显示数据。由于该过程需要涉及多个类,因此使用外观模式进行设计,编程模拟实现程序。FileOperation类用于读取文件,XMLDataConvertor类用于将不同格式文件转换为XML格

3、式,DataAnalysis用于对XML数据进行统计分析,ReportDisplay类用于显示报表。为了让系统具有更好的扩展性,在系统设计中引入了抽象外观类AbstractFacade,它拥有多个不同的子类,如XMLFacade,它用于与读取、分析和显示XML数据的类交互,ExtendedFacade类用于与读取、转换、分析和显示非XML数据的类交互。3. 实验结果1) 代码:package com.yue.www;abstract class Soundpublic abstract void phonate();class ConcreteSound extends SoundOverri

4、depublic void phonate() System.out.println("sound");abstract class Lamppublic abstract void twinkle();class ConcreteLamp extends LampOverridepublic void twinkle() System.out.println("twinkle");class CarControllerpublic void move()System.out.println("move");public void s

5、ound()System.out.println("sound");public void light()System.out.println("light");class CarAdapter extends CarControllerprivate Sound sound;private Lamp lamp;public CarAdapter(Sound sound ,Lamp lamp)public void sound()sound.phonate();public void move()lamp.twinkle();public void li

6、ght()sound.phonate();public class Client public static void main(String args)Sound sound ;Lamp lamp;CarController car;sound = new ConcreteSound();lamp = new ConcreteLamp();car = new CarAdapter(sound, lamp);car.move();car.sound();car.light();2) 代码:package com.yue.www;import java.util.ArrayList;import

7、 java.util.List;abstract class Company private String s;public Company(String s) this.s = s;abstract void Add(Company c);abstract void Delete(Company c);class ConcreteDepartment extends Company private List<String> list = new ArrayList<String>();public ConcreteDepartment(String s) super(

8、s);/ TODO Auto-generated constructor stubOverridevoid Add(Company c) list.add(c);Overridevoid Delete(Company c) list.remove(c);class HRDepartment extends Company private List<String> list = new ArrayList<String>();public HRDepartment(String s) super(s);/ TODO Auto-generated constructor s

9、tubpublic Overridevoid Add(Company c) list.add(c);Overridevoid Delete(Company c) list.remove(c);class FinanceDepartment extends Company private List<String> list = new ArrayList<String>();public FinanceDepartment(String s) super(s);/ TODO Auto-generated constructor stubpublic Overridevoi

10、d Add(Company c) list.add(c);Overridevoid Delete(Company c) list.remove(c);public class Client public static void main(String args) ConcreteDepartment con = new ConcreteDepartment("总");con.Add(new HRDepartment("分");3) 代码:package com.Factory.www; class FileOperation public String

11、read(String fileName)System.out.println("读取文件");return fileName; class XMLDataConvertor public String convert(String fileStr) System.out.println("转换");return fileStr; class Dataanalysis public String handle(String xmlStr) System.out.println("分析");return xmlStr; class Re

12、portDisplay public void display(String xmlStr) System.out.println("显示"); abstract class AbstractFacade public abstract void execute(String fileName); class XMLFacade extends AbstractFacade private FileOperation fo; private Dataanalysis da; private ReportDisplay rd; public XMLFacade() fo =

13、new FileOperation(); da = new Dataanalysis(); rd = new ReportDisplay(); public void execute(String fileName) String str = fo.read(fileName);String xmlstr = da.handle(str);rd.display(str); class ExtendedFacade extends AbstractFacade public void ExtendeFacade() public void execute(String fileName) public void execute(String fileNmae) String str = fo.read(f

温馨提示

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

评论

0/150

提交评论