设计模式十二.doc

上传人:jian****018 文档编号:9544235 上传时间:2020-04-06 格式:DOC 页数:23 大小:235.87KB
返回 下载 相关 举报
设计模式十二.doc_第1页
第1页 / 共23页
设计模式十二.doc_第2页
第2页 / 共23页
设计模式十二.doc_第3页
第3页 / 共23页
点击查看更多>>
资源描述
高级语言程序设计实验指导书一实验目的1. 熟悉UML统一建模语言;2. 回顾熟悉建造模式、原型模式;3. 熟悉XML文件的操作;4. 熟悉java的反射机制。二实验内容(1)某软件公司欲开发一个音频和视频播放软件,为了给用户使用提供方便,该播放软件提供了多种界面显示模式,如完整模式、精简模式、记忆模式、网络模式等。在不同的显示模式下主界面的组成元素有所差异,如在完整模式下将显示菜单、播放列表、主窗口、控制条等,在精简模式下只显示主窗口和控制条,而在记忆模式下将显示主窗口、控制条、收藏列表等。现使用建造者模式设计该软件。(2)设计一个客户类Customer,其中客户地址存储在地址类Address中,用浅克隆和深克隆分别实现Customer对象的复制并比较这两种克隆方式的异同。三实验环境PC微机;Windows 操作系统;Visual Studio 程序集成环境。四实验内容(1)某软件公司欲开发一个音频和视频播放软件,为了给用户使用提供方便,该播放软件提供了多种界面显示模式,如完整模式、精简模式、记忆模式、网络模式等。在不同的显示模式下主界面的组成元素有所差异,如在完整模式下将显示菜单、播放列表、主窗口、控制条等,在精简模式下只显示主窗口和控制条,而在记忆模式下将显示主窗口、控制条、收藏列表等。现使用建造者模式设计该软件。ModelBuilder.javapackage 设计模式实验十二周_1;public abstract class ModelBuilder protected Model model=new Model();public abstract void buildPlay();public abstract void buildMenu();public abstract void buildPlaylist();public abstract void buildMainWindow();public abstract void buildControlbar();public Model getModel()return model;Diector.javapackage 设计模式实验十二周_1;public class Diector private ModelBuilder mb;public void setModelBuilder(ModelBuilder mb)this.mb=mb;public Model construct()mb.buildPlay();mb.buildMenu();mb.buildPlaylist();mb.buildMainWindow();mb.buildControlbar();return mb.getModel();Model.javapackage 设计模式实验十二周_1;public class Model private String play;private String menu;private String playlist;private String mainWindow;private String controlbar;public void setPlay(String play)this.play=play;public void setMenu(String menu)this.menu=menu;public void setPlaylist(String playlist)this.playlist=playlist;public void setMainWindow(String mainWindow)this.mainWindow=mainWindow;public void setControlbar(String controlbar)this.controlbar=controlbar;public String getPlay()return(this.play);public String getMenu()return(this.menu);public String getPlaylist()return(this.playlist);public String getMainWindow()return(this.mainWindow);public String getControlbar()return(this.controlbar);CompleteModelBuilder.javapackage 设计模式实验十二周_1;public class CompleteModelBuilder extends ModelBuilderpublic void buildPlay()model.setPlay(完整模式:);public void buildMenu()model.setMenu(显示菜单);public void buildPlaylist()model.setPlaylist(显示播放列表);public void buildMainWindow()model.setMainWindow(显示主窗口);public void buildControlbar()model.setControlbar(显示控制条);MemoryModelBuilder.javapackage 设计模式实验十二周_1;public class MemoryModelBuilder extends ModelBuilderpublic void buildPlay()model.setPlay(记忆模式:);public void buildMenu()model.setMenu(不显示菜单);public void buildPlaylist()model.setPlaylist(显示播放列表);public void buildMainWindow()model.setMainWindow(显示主窗口);public void buildControlbar()model.setControlbar(显示控制条);NetworkModelBuilder.javapackage 设计模式实验十二周_1;public class NetworkModelBuilder extends ModelBuilderpublic void buildPlay()model.setPlay(网络模式:);public void buildMenu()model.setMenu(显示菜单);public void buildPlaylist()model.setPlaylist(不显示播放列表);public void buildMainWindow()model.setMainWindow(显示主窗口);public void buildControlbar()model.setControlbar(显示控制条);ShortModelBuilder.javapackage 设计模式实验十二周_1;public class ShortModelBuilder extends ModelBuilderpublic void buildPlay()model.setPlay(精简模式:);public void buildMenu()model.setMenu(显示菜单);public void buildPlaylist()model.setPlaylist(不显示播放列表);public void buildMainWindow()model.setMainWindow(不显示主窗口);public void buildControlbar()model.setControlbar(显示控制条);Client.javapackage 设计模式实验十二周_1;public class Client public static void main(String args)ModelBuilder mb=(ModelBuilder)XMLUtil.getBean();Diector diector=new Diector();diector.setModelBuilder(mb);Model model=diector.construct();System.out.println(model.getPlay();System.out.println(model.getMenu();System.out.println(model.getPlaylist();System.out.println(model.getMainWindow();System.out.println(model.getControlbar();XMLUtil.javapackage 设计模式实验十二周_1;import javax.xml.parsers.*;import org.w3c.dom.*; import java.io.*;public class XMLUtilpublic static Object getBean()tryDocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = dFactory.newDocumentBuilder();Document doc;doc = builder.parse(new File(configModel.xml); NodeList nl = doc.getElementsByTagName(classname); Node classNode=nl.item(0).getFirstChild(); String cName=classNode.getNodeValue(); Class c=Class.forName(cName); Object obj=c.newInstance(); return obj; catch(Exception e) e.printStackTrace(); return null; configModel.xml设计模式实验十二周_1.MemoryModelBuilderUML_1运行结果:(2) 设计一个客户类Customer,其中客户地址存储在地址类Address中,用浅克隆和深克隆分别实现Customer对象的复制并比较这两种克隆方式的异同。浅克隆Client.javapackage 设计模式实验十二周_2_1;public class Client public static void main(String args) Address address = new Address(东北, daming163.com, 13306446609); Customer xiaoming = new Customer(001, 小明, 13, address); Customer xiaohong = xiaoming.clone(); xiaohong.setName(小红); xiaohong.setId(002); xiaoming.show(); System.out.println(-); xiaohong.show(); System.out.println(-); System.out.println(xiaoming.equals(xiaohong); System.out.println(xiaoming.getAddr().equals(xiaohong.getAddr(); Address.javapackage 设计模式实验十二周_2_1;public class Address private String home; private String email; private String phone; public Address(String home,String email,String phone) this.setHome(home); this.setEmail(email); this.setPhone(phone); public String getHome() return home; public void setHome(String home) this.home = home; public String getEmail() return email; public void setEmail(String email) this.email = email; public String getPhone() return phone; public void setPhone(String phone) this.phone = phone; public void showAddress() System.out.println(Address:); System.out.println(Home:+getHome(); System.out.println(Email:+getEmail(); System.out.println(Phone:+getPhone(); Customer.javapackage 设计模式实验十二周_2_1;public class Customer implements Cloneable private String id; private String name; private int age; private Address addr; public Customer(String id,String name,int age,Address addr) this.setId(id); this.setName(name); this.setAge(age); this.setAddr(addr); public String getId() return id; public void setId(String id) this.id = id; public String getName() return name; public void setName(String name) this.name = name; public int getAge() return age; public void setAge(int age) this.age = age; public Address getAddr() return addr; public void setAddr(Address addr) this.addr = addr; public Customer clone() Customer cus = null; try cus = (Customer) super.clone(); catch (CloneNotSupportedException e) / TODO Auto-generated catch block e.printStackTrace(); return cus; public void show() System.out.println(id:+getId()+ name:+getName()+ age:+getAge(); getAddr().showAddress(); UML_2运行结果:深克隆Client.javapackage 设计模式实验十二周_2_2;public class Client public static void main(String args) Address address = new Address(东北, daming163.com, 13306446609); Customer xiaoming = new Customer(001, 小明, 13, address); Customer xiaohong = xiaoming.clone(); xiaohong.setName(小红); xiaohong.setId(002); xiaoming.show(); System.out.println(-); xiaohong.show(); System.out.println(-); System.out.println(xiaoming.equals(xiaohong); System.out.println(xiaoming.getAddr().equals(xiaohong.getAddr(); Address.javapackage 设计模式实验十二周_2_2;import java.io.*;public class Address implements Serializable private String home; private String email; private String phone; public Address(String home,String email,String phone) this.setHome(home); this.setEmail(email); this.setPhone(phone); public String getHome() return home; public void setHome(String home) this.home = home; public String getEmail() return email; public void setEmail(String email) this.email = email; public String getPhone() return phone; public void setPhone(String phone) this.phone = phone; public void showAddress() System.out.println(Address:); System.out.println(Home:+getHome(); System.out.println(Email:+getEmail(); System.out.println(Phone:+getPhone(); Customer.javapackage 设计模式实验十二周_2_2;import java.io.*;public class Customer implements Serializable private String id; private String name; private int age; private Address addr; public Customer(String id,String name,int age,Address addr) this.setId(id); this.setName(name); this.setAge(age); this.setAddr(addr); public String getId() return id; public void setId(String id) this.id = id; public String getName() return name; public void setName(String name) this.name = name; public int getAge() return age; public void setAge(int age) this.age = age; public Address getAddr() return addr; public void setAddr(Address addr) this.addr = addr; public Customer clone() Customer cus = null; try ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(this); ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray(); ObjectInputStream ois = new ObjectInputStream(bais); cus = (Customer) ois.readObject(); catch (ClassNotFoundException e) / TODO Auto-generated catch block e.printStackTrace(); catch (IOException e) / TODO Auto-generated catch block e.printStackTrace(); return cus; public void show() System.out.println(id:+getId()+ name:+getName()+ age:+getAge(); getAddr().showAddress(); UML_3运行结果:23
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑环境 > 建筑工程


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!