設(shè)計模式十二.doc_第1頁
設(shè)計模式十二.doc_第2頁
設(shè)計模式十二.doc_第3頁
設(shè)計模式十二.doc_第4頁
設(shè)計模式十二.doc_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

.一實驗?zāi)康?. 熟悉UML統(tǒng)一建模語言;2. 回顧熟悉建造模式、原型模式;3. 熟悉XML文件的操作;4. 熟悉java的反射機制。二實驗內(nèi)容(1)某軟件公司欲開發(fā)一個音頻和視頻播放軟件,為了給用戶使用提供方便,該播放軟件提供了多種界面顯示模式,如完整模式、精簡模式、記憶模式、網(wǎng)絡(luò)模式等。在不同的顯示模式下主界面的組成元素有所差異,如在完整模式下將顯示菜單、播放列表、主窗口、控制條等,在精簡模式下只顯示主窗口和控制條,而在記憶模式下將顯示主窗口、控制條、收藏列表等。現(xiàn)使用建造者模式設(shè)計該軟件。(2)設(shè)計一個客戶類Customer,其中客戶地址存儲在地址類Address中,用淺克隆和深克隆分別實現(xiàn)Customer對象的復(fù)制并比較這兩種克隆方式的異同。三實驗環(huán)境PC微機;Windows 操作系統(tǒng);Visual Studio 程序集成環(huán)境。四實驗內(nèi)容(1)某軟件公司欲開發(fā)一個音頻和視頻播放軟件,為了給用戶使用提供方便,該播放軟件提供了多種界面顯示模式,如完整模式、精簡模式、記憶模式、網(wǎng)絡(luò)模式等。在不同的顯示模式下主界面的組成元素有所差異,如在完整模式下將顯示菜單、播放列表、主窗口、控制條等,在精簡模式下只顯示主窗口和控制條,而在記憶模式下將顯示主窗口、控制條、收藏列表等。現(xiàn)使用建造者模式設(shè)計該軟件。ModelBuilder.javapackage 設(shè)計模式實驗十二周_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 設(shè)計模式實驗十二周_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 設(shè)計模式實驗十二周_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 設(shè)計模式實驗十二周_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 設(shè)計模式實驗十二周_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 設(shè)計模式實驗十二周_1;public class NetworkModelBuilder extends ModelBuilderpublic void buildPlay()model.setPlay(網(wǎng)絡(luò)模式:);public void buildMenu()model.setMenu(顯示菜單);public void buildPlaylist()model.setPlaylist(不顯示播放列表);public void buildMainWindow()model.setMainWindow(顯示主窗口);public void buildControlbar()model.setControlbar(顯示控制條);ShortModelBuilder.javapackage 設(shè)計模式實驗十二周_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 設(shè)計模式實驗十二周_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 設(shè)計模式實驗十二周_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設(shè)計模式實驗十二周_1.MemoryModelBuilderUML_1運行結(jié)果:(2) 設(shè)計一個客戶類Customer,其中客戶地址存儲在地址類Address中,用淺克隆和深克隆分別實現(xiàn)Customer對象的復(fù)制并比較這兩種克隆方式的異同。淺克隆Client.javapackage 設(shè)計模式實驗十二周_2_1;public class Client public static void main(String args) Address address = new Address(東北, ,; 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 設(shè)計模式實驗十二周_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 設(shè)計模式實驗十二周_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) = 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運行結(jié)果:深克隆Client.javapackage 設(shè)計模式實驗十二周_2_2;public class Client public static void main(String args) Address address = new Address(東北, ,; 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 設(shè)計模式實驗十二周_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 設(shè)計模式實驗十二周_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;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論