JAVA设计模式之创造型模式介绍.docx
10页JAVAA设计模模式之创创造型模模式创造型模模式包括括工厂方方法、抽抽象工厂厂、创造造者模式式、单态态模式、、原型模模式共5类1、工厂厂方法定义一个个用于创创建对象象的接口口,让子子类决定定实例化化哪一个个类FacctorryMeethood使一个个类的实实例化延迟到到其子类类适用条件件:1)当一一个类不不知道它它所必须须创建的的对象的的类的时时候2)当一一个类希希望由它它的子类类来指定定它所创创建的对对象的时时候3)当类类将创建建对象的的职责委委托给多个帮助助子类中的的某一个个,并且且类希望将哪哪一个帮帮助子类类是代理理者这一一信息局局部化的的时候参与者::1)Prroduuct::定义工工厂方法法所创建建的对象象的接口口2)CooncrreteeProoduct:实现Prooducct接口3)Crreattor::声明工工厂方法法,该方方法返回回一个Prooduct类型的的对象Creeatoor也可以以定义一一个工厂厂方法的的缺省实实现,它它返回一一个缺省省的ConncreetePProdductt对象可以调调用工厂厂方法以以创建一一个Prooducct对象4)CooncrreteeCreeatoor:重定义义工厂方方法以返返回一个个ConncreetePProdduct实例。
示例:packkagee zaantiip.mmoduuless;publliccclasss FFacttoryyMetthoddTesst {{publlicsstatticvvoidd maain((Strringg[] arggs) {IWorrkFaactoory stuudenntWoorkFFacttoryy = neww SttudeentWWorkkFacctorry());studdenttWorrkFaactoory..gettWorrk()).dooWorrk());IWorrkFaactoory teaacheerWoorkFFacttoryy = new TeeachherWWorkkFacctorry());teaccherrWorrkFaactoory..gettWorrk()).dooWorrk());}}// PProdducttinteerfaace Worrk {{voidd dooWorrk());}// CConccrettePrroduuctclasss SStuddenttWorrk iimpllemeentss Woork {@Oveerriidepubllicvvoidd dooWorrk()) {Systtem..outt.prrinttln(("学生做做作业");}}classs TeeachherWWorkk immpleemennts Woork {@Oveerriidepubllicvvoidd dooWorrk()) {Systtem..outt.priintlln(""老师审审批作业业");}}// CCreaatorrinteerfaace IWoorkFFacttoryy {Workk geetWoork(();}// CConccretteCrreattorclasss SStuddenttWorrkFaactoory impplemmentts IIWorrkFaactoory {@Oveerriidepubllic Worrk ggetWWorkk() {{retuurnnnew StuudenntWoork(();}}classs TTeaccherrWorrkFaactoory impplemmenttsIWWorkkFacctorry {{@Oveerriidepubllic Worrk ggetWWorkk() {retuurnnnew TeaacheerWoork(();}}输出结果果:学生做作作业老师审批批作业2抽象工工厂提供一个个创建一一系列相相关或相相互依赖赖对象的的接口,,而无需需指定它它们具体体的类。
适用条件件:1)一个个系统要要独立于于它的产产品的创创建、组组合和表表示时2)一个个系统要要由多个个产品系系列中的的一个来来配置时时3)当你你要强调调一系列列相关的的产品对对象的设设计以便便进行联联合使用用时4)当你你提供一一个产品品类库,,而只想想显示它它们的接口而不不是实现现时参与者::1)AbbstraactFFacttoryy:声明一一个创建建抽象产产品对象象的操作作接口2)CooncrreteeFacctorry:实现创创建具体体产品对对象的操操作3)AbbstrracttProoducct:为一类类产品对对象声明明一个接接口4)CooncrreteeProoducct:定义一一个将被被相应的的具体工工厂创建建的产品品对象,实现AbsttracctPrroduuct接口5)Cllientt:仅使用用由AbsstraactFFacttoryy和AbsstraactPProdduc**类声明明的接口口示例:packkagee zaantiip.mmoduuless;publliccclasss AAbsttracctFaactooryTTestt {publlicsstatticvvoidd maain((Strringg[] arggs) {// cclieentIAniimallFacctorry bblacckAnnimaalFaactoory = nnew BlaackAAnimmalFFacttoryy();;ICatt bllackkCatt = blacckAnnimalFFacttoryy.crreatteCaat());blacckCaat.eeat(();IDogg bllackkDogg = blaackAAnimmalFFacttoryy.crreatteDoog());blacckDoog.eeat(();IAniimallFacctorry wwhitteAnnimaalFaactoory = nnew WhiiteAAnimmalFFacttoryy();;ICatt whhiteeCatt = whiiteAAnimmalFFacttoryy.crreatteCaat());whitteCaat.eeat(();IDogg whhiteeDog == whhiteeAniimallFacctorry.ccreaateDDog(();whitteDoog.eeat(();}}// aabsttracct ffacttoryyinteerfaace IAnnimaalFaactoory {ICatt crreatteCaat());IDogg crreatteDoog());}// aabsttracct pprodducttinteerfaace ICaat {{voidd eaat());}inteerfaace IDoog {{voidd eaat());}// cconccrette pprodducttclasss BBlacckCaat iimpllemeentss ICCat {@Oveerriidepubllicvvoidd eaat()) {Systtem..out.pprinntlnn("tthe blaack catt iss eaatinng"));}}classs WWhitteCaat iimpllemeentss ICCat {@Oveerriidepubllicvvoidd eaat()) {Systtem..outt.prrinttln(("thhe wwhitte ccat is eattingg");;}}classs BBlacckDoog iimpleemennts IDoog {{@Oveerriidepubllicvvoidd eaat()) {Systtem..outt.prrinttln(("thhe bblacck ddog is eattingg");;}}classs WWhitteDoog iimpllemeentss IDDog {@Oveerriidepubllicvvoidd eaat()) {Systtem..outt.prrinttln(("thhe wwhitte ddog is eattingg");;}}// cconccreaate facctorryclasss BBlacckAnimmalFFacttoryy immpleemennts IAnnimaalFaactoory {@Oveerriidepubllic ICaat ccreaateCCat(() {{retuurnnnew BlaackCCat(();}@Oveerriidepubllic IDoog ccreaateDDog(() {{retuurnnnew BlaackDDog(();}}classs WWhitteAnnimaalFaactoory impplemmentts IIAniimallFacctorry {{@Oveerriidepubllic ICaat ccreatteCaat()) {retuurnnnew WhiiteCCat(();}@Oveerriidepubllic IDoog ccreaateDDog(() {{retuurnnnew WhiiteDDog(();}}输出结果果:the blaack catt iss eaatinngthe blaack dogg iss eaatinngthe whiite catt iss eaatinngthe whiite dogg iss eaatinng3、创造造者模式式将一个复复杂对象象的构造造与它的的表示分分离,使使得同样样的构建建过程可可以创建建不同的的表示。
适用条件件:1)当创创建复杂杂对象的的算法应应该独立立于该对对象的组组成部分分以及它它们的装装配方式式时2)当构构造过程程必须允允许被构造造的对象象有不同同的表示时时参与者::1)Buuildder:为创创建一个个Buiildeer对象的的各个部部件指定定抽象接接口2)CooncrreteeBuiildeer:实现Buiildeer的接口口以构造造和装配配该产品品的各个个部件定义并并明确它它所创建建的表示示提供供一个检检索产品品的接口口3)Diirecctorr:构造造一个使使用Buiildeer接口的的对象4)Prroduuct:表示示被构造造的复杂杂对象ConncetteBuuildder创建该该产品的的内部表表示并定定义它的的装配过过程包包含定义义组成部部件的类类,包括括将这些些部件装装配成最最终产品品的接口口示例:packkagee zaantiip.mmoduuless;publliccclasss CCreaatorrTess。

中级消防设施操作员监控26道线下抽考题.pdf
人教精通版(2024)新教材四年级英语上册Unit 4 Lesson 1 教学课件.pptx
区域研究与区域规划课件-ppt101页.ppt
2024-2025学年初中七年级上学期数学第一次月考卷及答案(北师大版).pdf
指伸屈肌腱断裂.ppt
幼儿园月后勤工作总结ppt.pptx
共享单车动态定价机制-深度研究.pptx
(完整word)混凝土结构设计原理期末试题库及其参考答案.doc
中考英语二轮复习专题讲与练: 宾语从句(含详解).doc
主动脉夹层的围手术期护理课件.ppt
2020年高考语文学科北京卷《阅卷纵横》.doc
国有土地使用权挂牌出让须知.doc


