工厂方法(Factory-)模式

上传人:回**** 文档编号:201720348 上传时间:2023-04-20 格式:DOCX 页数:10 大小:37.99KB
收藏 版权申诉 举报 下载
工厂方法(Factory-)模式_第1页
第1页 / 共10页
工厂方法(Factory-)模式_第2页
第2页 / 共10页
工厂方法(Factory-)模式_第3页
第3页 / 共10页
资源描述:

《工厂方法(Factory-)模式》由会员分享,可在线阅读,更多相关《工厂方法(Factory-)模式(10页珍藏版)》请在装配图网上搜索。

1、12工厂措施(Factory Mthd)模式 工厂措施模式是类的创立模式,又叫虚拟构造子(VirtualConsructor)模式或者多态性工厂(olmorphicFacory)模式。 工厂措施模式的用意是定义一种创立产品对象的工厂接口,将实际工作推迟到子类中。.2.1工厂措施模式的引进 工厂措施模式是简朴工厂模式的进一步抽象和推广。由于使用了多态性,工厂措施模式保持了简朴工厂模式的长处,并且克服了它的缺陷。下面是工厂措施模式的缩略类图: 在工厂措施模式中,核心的工厂类不再负责所有产品的创立,而是将具体创立的工作交给子类去做。这个核心工厂则变为抽象工厂角色,仅负责给出具工厂子类必须实现的接口,

2、而不接触哪一产品创立的细节。 这种抽象的成果,使这种工厂措施模式可以用来容许系统不修改具体工厂角色的状况下引进新产品,这一特点无疑使得工厂模式具有超过简朴工厂模式的优越性。12.2工厂措施模式的构造 在工厂措施模式中,一般均有一种平行的级别构造,也就是说工厂和产品是相应的的。抽象工厂相应抽象产品,具体工厂相应具体产品。简朴的示意图如下: 从上图可以看出,工厂措施模式的系统波及到了如下角色:抽象工厂角色:与应用程序无关,任何在模式中创立对象的工厂必须实现这个接口。 具体工厂角色:实现了抽象工厂接口的具体Java类,具有与引用密切有关的逻辑,并且受到应用程序的调用以创立产品对象。 抽象产品角色:工

3、厂措施所创立产品对象的超类型,也就是产品对象的共同父类或共同拥有的接口。 具体产品角色:这个角色实现了抽象产品角色所声名的接口。工厂措施所创立的每个具体产品对象都是某个具体产品角色的实例。1.2.3工厂措施模式在农场系统中的实现.2.31背景 在简朴工厂模式中,有个全能的园丁,控制所有作物的种植、生长和收获。目前农场规模变大了,管理更加专业化了。过去全能的园丁没有了,每一种作物均有专门的园丁管理,形成了规模化和专业化生产。12.2系统设计机构图.2.3.3实现源码1.2.3.1水果产品接口Frit.javpackage c.lavasoft.tens.fatoymhod.ybm;/*工厂模式-

4、工厂措施模式-一般性模式(农场应用) ReadMe:水果接口*/pulic intrface ruit /* 种植 */ od lant(); /* * 生长 */void gro(); / * 收获 * voidhrvest();1.3.2具体产品苹果Ape.javapackage co.lasof.pters.fatorymehod.ybs;/* 工厂模式-工厂措施模式-一般性模式(农场应用)* ReadMe: 水果工厂的产品:苹果*/pbliccls ApeiplemetsFruit private int reA;/* 种植 */ publicid plant() ystout.pin

5、tl(Aplha been lated.); * *生长/pulic voidgo() Ssem.o.prnln(ppe is gowin.); /* 收获 * publcvoidharvt() ytem.ourinln(Ale hs be harested.); /* * return 返回树龄*/ lc int gereeAg() ern treeAg; /* 设立树龄 */pulic voidstTreeAge(it eeAg) this.treeAge = treAge; 1.2.3.3.3具体产品葡萄:Gpe.jvapakage olavasoft.ptterns.facorymet

6、hod.yb;/*工厂模式-工厂措施模式-一般性模式(农场应用)* eadMe: 水果工厂的产品:葡萄*/pubc cas Grape implemens Fu pivateoola sedes; /与否有籽 /* * 种植 */ ublic vd pat() Sste.out.prntln(rap has beenlanted.); * * 生长 */ pblc voidgro() Stem.outprntn(rap grow.); /* * 收获 */ public vidavst()System.t.rintln(Grae has been hrvested.); * * eturn 与

7、否有籽 /ublola getSeedls() retn seedless; * * 有无籽的赋值措施 /pubic o sess(olean edess) this.eles seedles; /* 辅助措施/ pblic staic vdlog(Strigmsg) Sytem.ouprint(sg); 1.2.34具体产品草莓:Strawberry.javapakagem.laof.ttrns.fatorymeto.ybms;/* 工厂模式-工厂措施模式-一般性模式(农场应用)* eadM:水果工厂的产品:草莓/ubic clss Strwery ipements Fuit /*生长 */

8、 public void go() Sytem.printn(rery is groing.); * 收获 * publivod haret() ystem.out.prinn(Srawrr has beenharveed.); /* *种植 / blc void pant() System.outintn(Srawbery hs been planted);/* * 辅助措施 * plc stti void o(tring m) Syste.out.pritln(msg); 1.2.3.3.5水果工厂接口:Fruitden.jvpacke com.lavasf.patrnfctoryetd.

9、ym;* 工厂模式-工厂措施模式-一般性模式(农场应用)* ReadM: 水果工厂接口*/pubic interfaceFrutarener /* * 工厂措施 * * retrn 水果 */ pubic Fritfactory();1.3.3苹果工厂:ApleGareejavapackage com.lavasot.attrn.factrymetho.ybms;/* 工厂模式-工厂措施模式-一般性模式(农场应用)* ReadMe: 苹果工厂措施*/pulic class AppleGarer imlements Fritarer * * 工厂措施 *rtu 苹果*/ puic Frui ct

10、() ru f= nwAppl(); Sytem.outpnln(水果工厂(ApetGarener)成功创立一种水果:苹果!); reurn ;1.葡萄工厂:rpGardeerjavpackageom.lavasoft.parnsfactormethodyms;/* 工厂模式-工厂措施模式一般性模式(农场应用)Reade: 添加阐明*pubi clss Gaeardener imlmnts FruitGardene /* 工厂措施* reurn葡萄 */ public Fut acor()t f = ne Grp(); Sys.priln(水果工厂(Grapearener)成功创立一种水果:葡

11、萄!); retr f; 1.2.3.草莓工厂:StawerryGener.vapacae com.lavasftpaten.factrymthdybms;/*工厂模式-工厂措施模式-一般性模式(农场应用)*RedMe: 添加阐明bic lsawrryGardeer iplemnts FruitGarener /* *工厂措施 * eturn 草莓 /ublic Fruit actory() rui f =e Stawberry(); Sstem.ut.printn(水果工厂(trwberyGardene)成功创立一种水果:草莓!);et f;123.3.9测试类(客户端):TesAp.jaa

12、package om.aasoftpatterns.fatorymthod.b;/* 工厂模式-工厂措施模式-一般性模式(农场应用)*Reae: 测试类(客户端)*/pblc classesApp pite Fritrdeerf1,2, f; prveFruit p1, p, 3; pivae void te() /实力化水果工厂 1 newApplGrder();f2 = ew Greardner(); f3 = ne StwberGrdener(); 从水果工厂生产水果 = f1.aoy(); p2 =f2.fcoy(); p3 = f3.facto(); ublicsi od ma(Sr

13、ng rgs) Ttpp test = new TstApp(); es.tst(); .3.30测试运营成果水果工厂(pplGrdene)成功创立一种水果:苹果! 水果工厂(GpeGaree)成功创立一种水果:葡萄! 水果工厂(tawbrGadner)成功创立一种水果:草莓! rocess inshdwext o 01.2.3.4有关工厂措施模式的实现 在下面我简朴说说某些实现方式,不做具体分析了。1.使用java接口或者java抽象类l使用多种工厂措施l.产品循环使用l4.多态性的丧失和模式的退化,重要体目前工厂措施创立对象、工厂措施返回的类型、工厂级别构造三个方面。l1.2.35女娲举绳造人 女娲举绳造人是工厂措施模式的一种实例。下面仅仅给出设计图如下,具体编码请您自己实现。 呵呵,学会了简朴工厂模式再来学工厂措施,是不是很容易啊,看懂农场一种例子就够了,多实践多思考比什么都好!

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!