设计模式十二_第1页
设计模式十二_第2页
设计模式十二_第3页
设计模式十二_第4页
设计模式十二_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

一.实验目的熟悉UML统一建模语言;回顾熟悉建造模式、原型模式;熟悉XML文件的操作;熟悉java的反射机制。二.实验内容(1)某软件公司欲开发一个音频和视频播放软件,为了给用户使用提供方便,该播放软件提供了多种界面显示模式,如完整模式、精简模式、记忆模式、网络模式等。在不同的显示模式下主界面的组成元素有所差异,如在完整模式下将显示菜单、播放列表、主窗口、控制条等,在精简模式下只显示主窗口和控制条,而在记忆模式下将显示主窗口、控制条、收藏列表等。现使用建造者模式设计该软件。(2)设计一个客户类Customer,其中客户地址存储在地址类Address中,用浅克隆和深克隆分别实现Customer对象的复制并比较这两种克隆方式的异同。三.实验环境PC微机;Windows操作系统;VisualStudio程序集成环境。四.实验内容(1)某软件公司欲开发一个音频和视频播放软件,为了给用户使用提供方便,该播放软件提供了多种界面显示模式,如完整模式、精简模式、记忆模式、网络模式等。在不同的显示模式下主界面的组成元素有所差异,如在完整模式下将显示菜单、播放列表、主窗口、控制条等,在精简模式下只显示主窗口和控制条,而在记忆模式下将显示主窗口、控制条、收藏列表等。现使用建造者模式设计该软件。package设计模式实验十二周_1;publicabstractclassModelBuilder{protectedModelmodel=newModel();publicabstractvoidbuildPlay();publicabstractvoidbuildMenu();publicabstractvoidbuildPlaylist();publicabstractvoidbuildMainWindow();publicabstractvoidbuildControlbar();publicModelgetModel(){returnmodel;package设计模式实验十二周_1;publicclassDiector{privateModelBuildermb;=mb;publicModelconstruct(){();();();();();return();}}package设计模式实验十二周_1;publicclassModel{privateStringplay;privateStringmenu;privateStringplaylist;privateStringmainWindow;privateStringcontrolbar;publicvoidsetPlay(Stringplay){=play;}publicvoidsetMenu(Stringmenu){=menu;}publicvoidsetPlaylist(Stringplaylist){=playlist;}=mainWindow;publicvoidsetControlbar(Stringcontrolbar){=controlbar;}publicStringgetPlay(){return;}publicStringgetMenu(){return;}publicStringgetPlaylist(){return;}publicStringgetMainWindow(){return;publicStringgetControlbar(){return;}}package设计模式实验十二周_1;publicclassCompleteModelBuilderextendsModelBuilder{publicvoidbuildPlay(){("完整模式:");}("显示菜单");publicvoidbuildPlaylist(){("显示播放列表");}publicvoidbuildMainWindow(){("显示主窗口");}publicvoidbu订dControlbar(){("显示控制条");}}package设计模式实验十二周_1;publicclassMemoryModelBuilderextendsModelBuilder{publicvoidbuildPlay(){("记忆模式:");}publicvoidbuildMenu(){("不显示菜单");}publicvoidbuildPlaylist(){("显示播放列表");}publicvoidbuildMainWindow(){("显示主窗口");}publicvoidbuildControlbar(){("显示控制条");}package设计模式实验十二周_1;publicclassNetworkModelBuilderextendsModelBuilder{publicvoidbuildPlay(){("网络模式:");}publicvoidbuildMenu(){("显示菜单");}publicvoidbuildPlaylist(){("不显示播放列表");}("显示主窗口");publicvoidbuildControlbar(){("显示控制条");}}package设计模式实验十二周_1;publicclassShortModelBuilderextendsModelBuilder{publicvoidbuildPlay(){("精简模式:");}("显示菜单");publicvoidbuildPlaylist(){("不显示播放列表");}publicvoidbuildMainWindow(){("不显示主窗口");}publicvoidbuildControlbar(){("显示控制条");}}package设计模式实验十二周_1;publicclassClient{publicstaticvoidmain(Stringargs[]){ModelBuildermb=(ModelBuilder)();Diectordiector=newDiector();(mb);Modelmodel=();}}package设计模式实验十二周_1;importimport.*;publicstaticObjectgetBean(){try{DocumentBuilderFactorydFactory=();DocumentBuilderbuilder=();Documentdoc;doc=(newFile(""));NodeListnl=("classname");NodeclassNode=(0).getFirstChild();StringcName=();Classc=(cName);Objectobj=();returnobj;catch(Exceptione){();returnnull;}}}<?xmlversion=""?><config><classname>设计模式实验十二周</classname〉</config>UML_1OMadalaflB^Sfringme*xiiSinnsSking口Earn谢ndcwClnn^EEnfcrdb-jr:StaringiviPb^jah^Siring:widOMadalaflB^Sfringme*xiiSinnsSking口Earn谢ndcwClnn^EEnfcrdb-jr:StaringiviPb^jah^Siring:widivlhAMiu|nm:firingvoidsefPhyJktlpl^Ki::Siyi^g'l:wid5eiMa5r^ndcirtlfna*iWlndaMSir^Q^wdselD^nrdtddcofV'dbaF:Schngl.ioidT・WliyO:轴;ngg(rlhV"u(l;Siring+gelPiajiirlt!iSirnogeiMhnWlod口和口Sbin^鼻gviCorArolbw^Elrri^■-mcideli■MUdPfarf^v^d+twWWJWupMft'tf+占鲨虽ghW4hwMMjhnW^^Bh^L*g七>占曲it口nftgfiwn?;t-a^GMWBuildk0Oi*<?Tjrnmt!ModeBulder+sclModdSUIdcKrnbiMcdd&jlW^i旳id*ccn-raxic?^Mods!❻事btw。凶iBuldwrebuildPky<«;void4buldMcfluOiPd•biAldPLa^rtiD.tfdd■buldMflinMiindD'aj]:nid0biilHlLcrfrxslhir[|:rciT|@N«¥tfcAMoJel3^ldeirbu^layQi"ioidlbuJdMtTiLiOE曲Idbuicflr^fa^i:vuidbuiG^pn^ndcw^旳讨+buidConlrcikivZi何討站G>v>phMh7odeBulderbddFIdpCLwidbuldMItniJj:*口;dbuldFIj^-liMII:mid■hjWWaWwindent[li>-dd+todkiCc^^oitMrQi・Sd&WemorpModel^wider盘MH叫卢忒厂buHMeniiniiodhuklPh^niQ:rad4buHMflir^MndowQ:raidQbdE〔^7dbjrl〕i皿日运行结果:;:_ProblemsJavadoc風Declaration旦ConsoleS3<terminated>Client(4)[JavaApplication]C:\Java\jrel.S.0_12l\bin\javaw„exef20i7年5月9日下午3:11:17)脈舷:不耳示茱羊品示播説弼未呂示圭窮口显示担述条(2)设计一个客户类Customer,其中客户地址存储在地址类Address中,用浅克隆和深克隆分别实现Customer对象的复制并比较这两种克隆方式的异同。浅克隆package设计模式实验十二周_2_1;publicclassClient{publicstaticvoidmain(String[]args){Addressaddress=newAddress("东北","“,"");Customerxiaoming=newCustomer("001","小明",13,address);Customerxiaohong=();("小红");("002");();();package设计模式实验十二周_2_1;publicclassAddress{privateStringhome;privateStringemail;privateStringphone;publicAddress(Stringhome,Stringemail,Stringphone){(home);(email);(phone);}publicStringgetHome(){returnhome;publicvoidsetHome(Stringhome){=home;}publicStringgetEmail(){returnemail;}publicvoidsetEmail(Stringemail){=email;}publicStringgetPhone(){returnphone;}publicvoidsetPhone(Stringphone){=phone;publicvoidshowAddress(){"Address:");"Home:"+getHome());"Email:"+getEmail());"Phone:"+getPhone());package设计模式实验十二周_2_1;publicclassCustomerimplementsCloneable{privateStringid;privateStringname;privateintage;privateAddressaddr;publicCustomer(Stringid,Stringname,intage,Addressaddr){(id);(name);(age);(addr);}publicStringgetId(){returnid;}publicvoidsetId(Stringid){=id;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage){=age;}publicAddressgetAddr(){returnaddr;}publicvoidsetAddr(Addressaddr){=addr;}publicCustomerclone(){Customercus=null;try{cus=(Customer)();}catch(CloneNotSupportedExceptione){howAddress();}}UML_2

运行结果:■*_ProblemsJavadoc曉.Dedaration旦Consolej<termimated>Client(5)[JavaApplication]C:\Java\jrcl.8.0_l2l\biavaw.cxe(2017年5月今巳下午■石)*d:€01name:駆age:13jftddress:Home:苗北Email::daniing@16弓.comPhonert33&64466S9id:-002name:4tage:13Address:Home:京北Emai1:daming@163“comPhonealsetrue深克隆package设计模式实验十二周_2_2;publicclassClient{publicstaticvoidmain(String[]args){Addressaddress=newAddress(Addressaddress=newAddress("东北","“,"");Customerxiaoming=newCustomer("001","小明"13,address);Customerxiaohong=();("小红");("002");();();");package设计模式实验十二周_2_2;import.*;publicclassAddressimplementsSerializable{privateStringhome;privateStringemail;privateStringphone;publicAddress(Stringhome,Stringemail,Stringphone){(home);(email);(phone);}publicStringgetHome(){returnhome;publicvoidsetHome(Stringhome){=home;}publicStringgetEmail(){returnemail;}publicvoidsetEmail(Stringemail){=email;}publicStringgetPhone(){returnphone;}publicvoidsetPhone(Stringphone){=phone;publicvoidshowAddress(){"Address:");"Home:"+getHome());"Email:"+getEmail());"Phone:"+getPhone());package设计模式实验十二周_2_2;import.*;publicclassCustomerimplementsSerializable{privateStringid;privateStringname;privateintage;privateAddressaddr;publicCustomer(Stringid,Stringname,intage,Addressaddr){(id);(name);(age);(addr);}publicStringgetId(){returnid;}publicvoidsetId(Stringid){=id;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage){=age;}publicAddressgetAddr(){returnaddr;}publicvoidsetAddr(Addressaddr){=addr;}publicCustomerclone(){Customercus=null;try{ByteArrayOutputStreambaos=newByteArrayOutputStream();ObjectOutputStreamoos=newObjectOutputStream(baos);(this);ByteArrayInputStreambais=newByteArrayInputStream());ObjectInputStreamois=newObjectInputStream(bais);cus=(Customer)();

}catch(ClassNotFoundExceptione){howAddress();UML_3nhome:Stringbnhome:StringbsmaikString口phone:String&Addre-ss^hame

温馨提示

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

评论

0/150

提交评论