JAVA设计模式之创造型模式介绍1930.docx





《JAVA设计模式之创造型模式介绍1930.docx》由会员分享,可在线阅读,更多相关《JAVA设计模式之创造型模式介绍1930.docx(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、JAVA设设计模式式之创造造型模式式创造型模式式包括工工厂方法法、抽象象工厂、创创造者模模式、单单态模式式、原型型模式共共5类1、工厂方方法定义一个用用于创建建对象的的接口,让让子类决决定实例例化哪一一个类。FacctorryMeethood使一个个类的实实例化延迟到到其子类类。适用条件:1)当一个个类不知知道它所所必须创创建的对对象的类类的时候候。2)当一个个类希望望由它的的子类来来指定它它所创建建的对象象的时候候。3)当类将将创建对对象的职职责委托托给多个帮助助子类中的的某一个个,并且且类希望将哪哪一个帮帮助子类类是代理理者这一一信息局局部化的的时候。参与者:1)Prooducct:定义工
2、工厂方法法所创建建的对象象的接口口。2)ConncreetePProdduct:实现Prooducct接口。3)Creeatoor:声明工工厂方法法,该方方法返回回一个Prooduct类型的的对象。Creeatoor也可以以定义一一个工厂厂方法的的缺省实实现,它它返回一一个缺省省的ConncreetePProdductt对象。可可以调用用工厂方方法以创创建一个个Prooducct对象。4)ConncreeteCCreaatorr:重定义义工厂方方法以返返回一个个ConncreetePProdduct实例。示例:packaage zzanttip.moddulees;publiic claass
3、 FacctorryMeethoodTeest publlic staaticc voiid mmainn(Sttrinng arrgs) IWoorkFFacttoryy sttudeentWWorkkFacctorry = neew SStuddenttWorrkFaactoory();stuudenntWoorkFFacttoryy.geetWoork().ddoWoork();IWoorkFFacttoryy teeachherWWorkkFacctorry = new TeeachherWWorkkFacctorry();teaacheerWoorkFFacttoryy.geetWo
4、ork().ddoWoork();/ Prroduuctinterrfacce WWorkk voidd dooWorrk();/ CooncrreteeProoducctclasss SttudeentWWorkk immpleemennts Worrk Oveerriidepubllic voiid ddoWoork() Sysstemm.ouut.pprinntlnn(学生做做作业);classs TeeachherWWorkk immpleemennts Woork Oveerriidepubllic voiid ddoWoork() Sysstemm.ouut.pprinntlnn(
5、老师审审批作业业);/ Crreattorinterrfacce IIWorrkFaactoory Workk geetWoork();/ CooncrreteeCreeatoorclasss SttudeentWWorkkFacctorry iimpllemeentss IWWorkkFacctorry Oveerriidepubllic Worrk ggetWWorkk() retturnn neww SttudeentWWorkk();classs TeeachherWWorkkFacctorry iimpllemeentss IWoorkFFacttoryy Oveerriidepub
6、llic Worrk ggetWWorkk() retturnn neww TeeachherWWorkk();输出结果:学生做作业业老师审批作作业2 抽象工工厂提供一个创创建一系系列相关关或相互互依赖对对象的接接口,而而无需指指定它们们具体的的类。适用条件:1)一个系系统要独独立于它它的产品的创创建、组组合和表表示时。2)一个系系统要由由多个产产品系列列中的一一个来配配置时。3)当你要要强调一一系列相相关的产产品对象象的设计计以便进进行联合合使用时时。4)当你提提供一个个产品类类库,而而只想显显示它们们的接口而不不是实现现时。参与者:1)AbsstraactFFacttoryy:声明一一个创
7、建建抽象产产品对象象的操作作接口。2)ConncreeteFFacttoryy:实现创创建具体体产品对对象的操操作。3)AbsstraactPProdductt:为一类类产品对对象声明明一个接接口。4)ConncreetePProdduct:定义一一个将被被相应的的具体工工厂创建建的产品品对象,实现AbsttracctPrroduuct接口。5)Cliientt:仅使用用由AbsstraactFFacttoryy和AbsstraactPProdduc*类声明明的接口口。示例:packaage zanntipp.moodulles;publiic claass AbsstraactFFactto
8、ryyTesst publlic staaticc voiid mmainn(Sttrinng arrgs) / cliienttIAnnimaalFaactoory blaackAAnimmalFFacttoryy = neww BllackkAniimallFacctorry();ICaat bblacckCaat = bllackkAniimalFFacttoryy.crreatteCaat();blaackCCat.eatt();IDoog bblacckDoog = bllackkAniimallFacctorry.ccreaateDDog();blaackDDog.eatt();I
9、AnnimaalFaactoory whiiteAAnimmalFFacttoryy = neww WhhiteeAniimallFacctorry();ICaat wwhitteCaat = whhiteeAniimallFacctorry.ccreaateCCat();whiiteCCat.eatt();IDoog wwhitteDoog = whhiteeAniimallFacctorry.ccreaateDDog();whiiteDDog.eatt();/ abbstrractt faactooryinterrfacce IIAniimallFacctorry ICatt crreat
10、teCaat();IDogg crreatteDoog();/ abbstrractt prroduuctinterrfacce IICatt voidd eaat();interrfacce IIDogg voidd eaat();/ cooncrretee prroduuctclasss BllackkCatt immpleemennts ICaat Oveerriidepubllic voiid eeat() Sysstemm.out.pprinntlnn(tthe blaack catt iss eaatinng);classs WhhiteeCatt immpleemennts IC
11、aat Oveerriidepubllic voiid eeat() Sysstemm.ouut.pprinntlnn(tthe whiite catt iss eaatinng);classs BllackkDogg impleemennts IDoog Oveerriidepubllic voiid eeat() Sysstemm.ouut.pprinntlnn(tthe blaack dogg iss eaatinng);classs WhhiteeDogg immpleemennts IDoog Oveerriidepubllic voiid eeat() Sysstemm.ouut.
12、pprinntlnn(tthe whiite dogg iss eaatinng);/ cooncrreatte ffacttoryyclasss BllackkAnimmalFFacttoryy immpleemennts IAnnimaalFaactoory Oveerriidepubllic ICaat ccreaateCCat() retturnn neww BllackkCatt();Oveerriidepubllic IDoog ccreaateDDog() retturnn neww BllackkDogg();classs WhhiteeAniimallFacctorry ii
13、mpllemeentss IAAnimmalFFacttoryy Oveerriidepubllic ICaat ccreatteCaat() retturnn neww WhhiteeCatt();Oveerriidepubllic IDoog ccreaateDDog() retturnn neww WhhiteeDogg();输出结果:the bblacck ccat is eattinggthe bblacck ddog is eattinggthe wwhitte ccat is eattinggthe wwhitte ddog is eattingg3、创造者者模式将一个复杂杂对象
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 设计 模式 创造 介绍 1930

限制150内