资源预览内容
第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
第9页 / 共9页
亲,该文档总共9页全部预览完了,如果喜欢就下载吧!
资源描述
实 验 报 告系 别班 级学 号姓 名时间地点20160418课程名称设计模式实验名称适配器、组合、外观实 验 过 程一实验目的与要求熟练使用适配器、组合、外观模式二实验设备微型计算机3 实验原理和实验内容1. 实验原理: 2. 实验内容:1) 某公司欲开发一款儿童玩具汽车,为了更好地吸引小朋友的注意力,该玩具汽车在移动过程中伴随着灯光闪烁和声音提示,在该公司以往的产品中已经实现了控制灯光闪烁和声音提示的程序,为了重用先前的代码并且使得汽车控制软件具有更好的灵活性和扩展性,使用适配器模式设计该系统,所得类图如下图所示。编程模式实现程序。2) 某公司的组织结构采用组合设计模式来设计,得到类图如下。其中Company为抽象类,定义了在组织结构上添加(Add)和删除(Delete)部门的方法接口。类ConcreteCompany表示具体的公司,可以设置不同的部门。类HRDepartment和类FianceDepartment分别表示人力资源部和财务部。编程模拟实现。3) 某信息系统需要提供一个数据读取和报表显示模块,可以将来自不同类型文件中的数据转换成XML格式,并对数据进行统计和分析,然后以报表方式来显示数据。由于该过程需要涉及多个类,因此使用外观模式进行设计,编程模拟实现程序。FileOperation类用于读取文件,XMLDataConvertor类用于将不同格式文件转换为XML格式,DataAnalysis用于对XML数据进行统计分析,ReportDisplay类用于显示报表。为了让系统具有更好的扩展性,在系统设计中引入了抽象外观类AbstractFacade,它拥有多个不同的子类,如XMLFacade,它用于与读取、分析和显示XML数据的类交互,ExtendedFacade类用于与读取、转换、分析和显示非XML数据的类交互。3. 实验结果1) 代码:package com.yue.www;abstract class Soundpublic abstract void phonate();class ConcreteSound extends SoundOverridepublic 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 sound()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 light()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 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 list = new ArrayList();public ConcreteDepartment(String s) super(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 list = new ArrayList();public HRDepartment(String s) super(s);/ TODO Auto-generated constructor stubpublic Overridevoid Add(Company c) list.add(c);Overridevoid Delete(Company c) list.remove(c);class FinanceDepartment extends Company private List list = new ArrayList();public FinanceDepartment(String s) super(s);/ TODO Auto-generated constructor stubpublic Overridevoid 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 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 ReportDisplay 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 = 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(fileName);String xmlstr = da.handle(str);rd.display(str); public class Test public static void main(String args) AbstractFacade facade;facade = new AbstractFacade();facade.execute(file.xml);4 实验总结9
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号