ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:20.23KB ,
资源ID:29554218      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/29554218.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java工厂模式.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Java工厂模式.docx

1、Java工厂模式今天继续设计模式之旅,给大家带来工厂模式,简单列一下这个模式的家族:1、静态工厂模式2、简单工厂模式3、工厂方法模式4、抽象工厂模式是不是觉得,我勒个去,这工厂还能列出这么多分类,哈哈,下面开始各个击破。1、静态工厂模式这个最常见了,项目中的辅助类,TextUtil.isEmpty等,类+静态方法。下面开始详细介绍:略。2、简单工厂模式下面开始谈谈卖肉夹馍,最近程序员卖肉夹馍很火,啥时候大牛们都去卖了,我等就崛起了,哈哈。首先你得有个店:RoujiaMoStorejava view plain copy1. packagecom.zhy.pattern.factory.a;2.

2、 3. publicclassRoujiaMoStore4. 5. 6. /*7. *根据传入类型卖不同的肉夹馍8. *9. *paramtype10. *return11. */12. publicRouJiaMosellRouJiaMo(Stringtype)13. 14. RouJiaMorouJiaMo=null;15. 16. if(type.equals(Suan)17. 18. rouJiaMo=newSuanRouJiaMo();19. 20. elseif(type.equals(Tian)21. 22. rouJiaMo=newTianRouJiaMo();23. else

3、if(type.equals(La)24. 25. rouJiaMo=newLaRouJiaMo();26. 27. 28. rouJiaMo.prepare();29. rouJiaMo.fire();30. rouJiaMo.pack();31. returnrouJiaMo;32. 33. 34. 然后你得有各种风味的馍馍:java view plain copy1. packagecom.zhy.pattern.factory.a;2. 3. publicabstractclassRouJiaMo4. 5. protectedStringname;6. 7. /*8. *准备工作9.

4、*/10. publicvoidprepare()11. 12. System.out.println(揉面-剁肉-完成准备工作);13. 14. 15. /*16. *使用你们的专用袋-包装17. */18. publicvoidpack()19. 20. System.out.println(肉夹馍-专用袋-包装);21. 22. /*23. *秘制设备-烘烤2分钟24. */25. publicvoidfire()26. 27. System.out.println(肉夹馍-专用设备-烘烤);28. 29. java view plain copy1. packagecom.zhy.pa

5、ttern.factory.a;2. 3. importcom.zhy.pattern.factory.a.RouJiaMo;4. 5. /*6. *辣味肉夹馍7. *8. *authorzhy9. *10. */11. publicclassLaRouJiaMoextendsRouJiaMo12. 13. publicLaRouJiaMo()14. 15. this.name=辣味肉夹馍;16. 17. java view plain copy1. packagecom.zhy.pattern.factory.a;2. 3. 4. 5. /*6. *酸味肉夹馍7. *8. *authorzh

6、y9. *10. */11. publicclassSuanRouJiaMoextendsRouJiaMo12. 13. publicSuanRouJiaMo()14. 15. this.name=酸味肉夹馍;16. 17. java view plain copy1. packagecom.zhy.pattern.factory.a;2. 3. 4. 5. /*6. *酸味肉夹馍7. *8. *authorzhy9. *10. */11. publicclassSuanRouJiaMoextendsRouJiaMo12. 13. publicSuanRouJiaMo()14. 15. thi

7、s.name=酸味肉夹馍;16. 17. 现在这样的设计,虽然可以支持你卖肉夹馍了,但是有点问题,生产馍的种类和你的RoujiaMoStore耦合度太高了,如果增加几种风味,删除几种风味,你得一直修改sellRouJiaMo中的方法,所以我们需要做一定的修改,此时简单工厂模式就能派上用场了。我们开始写个简单工厂,把产生馍的过程拿出来:java view plain copy1. packagecom.zhy.pattern.factory.a;2. 3. publicclassSimpleRouJiaMoFactroy4. 5. publicRouJiaMocreateRouJiaMo(Str

8、ingtype)6. 7. RouJiaMorouJiaMo=null;8. if(type.equals(Suan)9. 10. rouJiaMo=newSuanRouJiaMo();11. 12. elseif(type.equals(Tian)13. 14. rouJiaMo=newTianRouJiaMo();15. elseif(type.equals(La)16. 17. rouJiaMo=newLaRouJiaMo();18. 19. returnrouJiaMo;20. 21. 22. 然后以组合的方式,让Store来使用:java view plain copy1. pack

9、agecom.zhy.pattern.factory.a;2. 3. publicclassRoujiaMoStore4. 5. privateSimpleRouJiaMoFactroyfactroy;6. 7. publicRoujiaMoStore(SimpleRouJiaMoFactroyfactroy)8. 9. this.factroy=factroy;10. 11. 12. /*13. *根据传入类型卖不同的肉夹馍14. *15. *paramtype16. *return17. */18. publicRouJiaMosellRouJiaMo(Stringtype)19. 20.

10、 RouJiaMorouJiaMo=factroy.createRouJiaMo(type);21. rouJiaMo.prepare();22. rouJiaMo.fire();23. rouJiaMo.pack();24. returnrouJiaMo;25. 26. 27. 好了,现在你随便添加什么种类的馍,删除什么种类的馍就和Store无关了,就是么人家只负责卖馍么 这就是简单工厂模式,当然了,大家也都比较熟悉。3、工厂方法模式定义:定义一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法模式把类实例化的过程推迟到子类。好了,看完定义,下面我们用例子来展示。继续肉夹馍,由于使

11、用了简单工厂模式,肉夹馍生意那个好啊,所以下载决定去西安开个分店,去北京开个分店。既然有分店了,那总店就是抽象的了:java view plain copy1. packagecom.zhy.pattern.factory.b;2. 3. publicabstractclassRoujiaMoStore4. 5. 6. publicabstractRouJiaMocreateRouJiaMo(Stringtype);7. 8. /*9. *根据传入类型卖不同的肉夹馍10. *11. *paramtype12. *return13. */14. publicRouJiaMosellRouJiaM

12、o(Stringtype)15. 16. RouJiaMorouJiaMo=createRouJiaMo(type);17. rouJiaMo.prepare();18. rouJiaMo.fire();19. rouJiaMo.pack();20. returnrouJiaMo;21. 22. 23. 然后在开两个分店,这里拿一个代码做演示,其他都一样:java view plain copy1. packagecom.zhy.pattern.factory.b;2. 3. 4. 5. /*6. *西安肉夹馍店7. *8. *authorzhy9. *10. */11. publicclas

13、sXianRouJiaMoStoreextendsRoujiaMoStore12. 13. 14. Override15. publicRouJiaMocreateRouJiaMo(Stringtype)16. 17. RouJiaMorouJiaMo=null;18. if(type.equals(Suan)19. 20. rouJiaMo=newXianSuanRouJiaMo();21. 22. elseif(type.equals(Tian)23. 24. rouJiaMo=newXianTianRouJiaMo();25. elseif(type.equals(La)26. 27.

14、rouJiaMo=newXianLaRouJiaMo();28. 29. returnrouJiaMo;30. 31. 32. 33. 然后就是各个西安口味的肉夹馍了,这代码就不贴了。可以看出我们把制作肉夹馍的过程以抽象方法的形式让子类去决定了,对照定义:1、定义了创建对象的一个接口:public abstract RouJiaMo createRouJiaMo(String type);2、由子类决定实例化的类,可以看到我们的馍是子类生成的。可能有人会说,我用简单工厂模式也行啊,但是如果10来个城市*5种风味/城市,那么岂不是简单工厂里面需要50多个if,再说人家西安肉夹馍分店就不能有点自己

15、的秘诀,当然由它自己定最好。好了,方法工厂模式介绍完毕。4、抽象工厂模式定义:提供一个接口,用于创建相关的或依赖对象的家族,而不需要明确指定具体类。这定义有点绕口,算了,还是拿例子来说。继续卖肉夹馍,咱们生意这么好,难免有些分店开始动歪脑子,开始使用劣质肉等,砸我们的品牌。所以我们要拿钱在每个城市建立自己的原料场,保证高质量原料的供应。于是我们新建一个提供原料的接口:java view plain copy1. packagecom.zhy.pattern.factory.b;2. 3. /*4. *提供肉夹馍的原料5. *authorzhy6. *7. */8. publicinterfac

16、eRouJiaMoYLFactroy9. 10. /*11. *生产肉12. *return13. */14. publicMeatcreateMeat();15. 16. /*17. *生产调料神马的18. *return19. */20. publicYuanLiaocreateYuanliao();21. 22. java view plain copy1. packagecom.zhy.pattern.factory.b;2. 3. /*4. *根据西安当地特色,提供这两种材料5. *authorzhy6. *7. */8. publicclassXianRouJiaMoYLFactr

17、oyimplementsRouJiaMoYLFactroy9. 10. 11. Override12. publicMeatcreateMeat()13. 14. returnnewFreshMest();15. 16. 17. Override18. publicYuanLiaocreateYuanliao()19. 20. returnnewXianTeSeYuanliao();21. 22. 23. 有了原理工厂,那我们稍微修改下RouJiaMo的prepare方法:java view plain copy1. packagecom.zhy.pattern.factory.b;2. 3.

18、 publicabstractclassRouJiaMo4. 5. protectedStringname;6. 7. /*8. *准备工作9. */10. publicfinalvoidprepare(RouJiaMoYLFactroyylFactroy)11. 12. Meatmeat=ylFactroy.createMeat();13. YuanLiaoyuanliao=ylFactroy.createYuanliao();14. System.out.println(使用官方的原料+meat+,+yuanliao+作为原材料制作肉夹馍);15. 16. 17. /*18. *使用你们的

19、专用袋-包装19. */20. publicfinalvoidpack()21. 22. System.out.println(肉夹馍-专用袋-包装);23. 24. 25. /*26. *秘制设备-烘烤2分钟27. */28. publicfinalvoidfire()29. 30. System.out.println(肉夹馍-专用设备-烘烤);31. 32. 好了,现在必须用我们官方原料做为原材料了。现在对比定义:1、提供一个接口:public interface RouJiaMoYLFactroy2、用于创建相关的或依赖对象的家族public Meat createMeat();pub

20、lic YuanLiao createYuanliao();我们接口用于创建一系列的原材料。好了,最后测试下,我要在西安馍店,买个酸味的尝尝:java view plain copy1. packagecom.zhy.pattern.factory.b;2. 3. 4. publicclassTest5. 6. publicstaticvoidmain(Stringargs)7. 8. 9. RoujiaMoStoreroujiaMoStore=newXianRouJiaMoStore();10. RouJiaMosuanRoujiaMo=roujiaMoStore.sellRouJiaMo(Suan);11. System.out.println(suanRoujiaMo.name);12. 13. java view plain copy1. 使用官方的原料com.zhy.pattern.factory.b.FreshMeste53108,com.zhy.pattern.factory.b.XianTeSeYuanliaof62373作为原材料制作肉夹馍2. 肉夹馍-专用设备-烘烤3. 肉夹馍-专用袋-包装4. 酸味肉夹馍哈哈肉夹馍店的已经建立起来了,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1