




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一实验目的1. 熟悉UML统一建模语言;2. 回顾熟悉建造模式、原型模式;3. 熟悉XML文件的操作;4. 熟悉java的反射机制。二实验内容(1)某软件公司欲开发一个音频和视频播放软件,为了给用户使用提供方便,该播放软件提供了多种界面显示模式,如完整模式、精简模式、记忆模式、网络模式等。在不同的显示模式下主界面的组成元素有所差异,如在完整模式下将显示菜单、播放列表、主窗口、控制条等,在精简模式下只显示主窗口和控制条,而在记忆模式下将显示主窗口、控制条、收藏列表等。现使用建造者模式设计该软件。(2)设计一个客户类Customer,其中客户地址存储在地址类Address中,用浅克隆和深克隆分别实
2、现Customer对象的复制并比较这两种克隆方式的异同。三实验环境PC微机;Windows 操作系统;Visual Studio 程序集成环境。四实验内容(1)某软件公司欲开发一个音频和视频播放软件,为了给用户使用提供方便,该播放软件提供了多种界面显示模式,如完整模式、精简模式、记忆模式、网络模式等。在不同的显示模式下主界面的组成元素有所差异,如在完整模式下将显示菜单、播放列表、主窗口、控制条等,在精简模式下只显示主窗口和控制条,而在记忆模式下将显示主窗口、控制条、收藏列表等。现使用建造者模式设计该软件。ModelBuilder.javapackage 设计模式实验十二周_1;public a
3、bstract 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 设计
4、模式实验十二周_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 priva
5、te 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
6、 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
7、 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.setPlaylis
8、t("显示播放列表");public void buildMainWindow()model.setMainWindow("显示主窗口");public void buildControlbar()model.setControlbar("显示控制条");MemoryModelBuilder.javapackage 设计模式实验十二周_1;public class MemoryModelBuilder extends ModelBuilderpublic void buildPlay()model.setPlay("记忆模式
9、:");public void buildMenu()model.setMenu("不显示菜单");public void buildPlaylist()model.setPlaylist("显示播放列表");public void buildMainWindow()model.setMainWindow("显示主窗口");public void buildControlbar()model.setControlbar("显示控制条");NetworkModelBuilder.javapackage 设计
10、模式实验十二周_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("显示主窗口
11、");public void buildControlbar()model.setControlbar("显示控制条");ShortModelBuilder.javapackage 设计模式实验十二周_1;public class ShortModelBuilder extends ModelBuilderpublic void buildPlay()model.setPlay("精简模式:");public void buildMenu()model.setMenu("显示菜单");public void buildPla
12、ylist()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)
13、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();X
14、MLUtil.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 = buil
15、der.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
16、(); return null; configModel.xml<?xml version="1.0"?><config><classname>设计模式实验十二周_1.MemoryModelBuilder</classname></config>UML_1运行结果:(2) 设计一个客户类Customer,其中客户地址存储在地址类Address中,用浅克隆和深克隆分别实现Customer对象的复制并比较这两种克隆方式的异同。浅克隆Client.javapackage 设计模式实验十二周_2_1;public clas
17、s Client public static void main(String args) Address address = new Address("东北", "daming", ); Customer xiaoming = new Customer("001", "小明", 13, address); Customer xiaohong = xiaoming.clone(); xiaohong.setName("小红"); xiaohong.setId("002");
18、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 S
19、tring 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
20、(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(); Syste
21、m.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); th
22、is.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) = name; public int getAge() return age; public void setAge(int age) this.age = age; public Address getAddr()
23、 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:&q
24、uot;+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("东北", "daming", ); Customer xiaoming = new Customer(
25、"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)
26、; 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)
27、; 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
28、) 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 vo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 无人机物流配送2025年技术创新与产业链布局研究报告
- 暴雨安全测试题及答案
- 四川国际标榜职业学院《商务阅读与写作》2023-2024学年第二学期期末试卷
- 新能源汽车服务市场发展的潜力研究试题及答案
- 锦州医科大学《中医伤科学》2023-2024学年第二学期期末试卷
- 塔河县2025届三下数学期末考试模拟试题含解析
- 安全工程师实习考核试题及答案
- 无锡工艺职业技术学院《建筑与环境设计方法》2023-2024学年第二学期期末试卷
- 江苏省江苏省大丰市万盈初级中学2024-2025学年初三下学期1月期末考试化学试题含解析
- 岭南师范学院《新闻学理论》2023-2024学年第一学期期末试卷
- 高中政治经济主观题材料对应术语总结
- 2025年金融数学考试试题及答案
- 2024年安徽省公务员【申论】考试真题及答案-(A卷+B卷+C卷)三套
- 浙江国企招聘2024温州市公用事业发展集团有限公司招聘8人笔试参考题库附带答案详解
- 研发月报工作总结
- 体育产业信息技术应用提升计划
- 2025年山东鲁商诚正教育科技有限公司招聘笔试参考题库含答案解析
- 急性ST段抬高型心肌梗死溶栓治疗专家共识2024解读
- 服务消费券发放的精细化实施方案
- 【MOOC期末】《介入放射学》(东南大学)中国大学慕课答案
- 2025年国家电力安全知识竞赛题库及答案(共50题)
评论
0/150
提交评论