经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » 设计模式 » 查看文章
设计模式之美—简单工厂模式
来源:cnblogs  作者:夜深思  时间:2019/10/17 9:23:03  对本文有异议

简单工厂模式

  简单工厂模式分为三种:普通简单工厂、多方法简单工厂、静态方法简单工厂。

普通工厂模式

  最近看了老酒馆电视剧,深深被陈怀海他们的情怀所感动,当然里面也有很多的酒,比如扳倒井,闷倒驴,跑舌头,吹破天,二闺女,枕头亲。我们以酒为例:

  创建酒的接口:

  1. public interface Liqueur {
  2. public void taste();//酒味
  3. }

 

  创建实现类:

  (1)闷倒驴味道

  1. 1 public class Mdl implements Liqueur {
  2. 2 @Override
  3. 3 public void taste() {
  4. 4 System.out.println("我是闷倒驴,辣的!");
  5. 5 }
  6. 6 }

   

  (2)跑舌头味道(里面的杜先生舌头惹了祸,没了,特意点了这跑舌头)

  1. 1 public class Pst implements Liqueur {
  2. 2 @Override
  3. 3 public void taste() {
  4. 4 System.out.println("我是跑舌头,苦的!");
  5. 5 }
  6. 6 }

   

  建工厂类:

  1. 1 public class MakeLiqueurFactory {
  2. 2
  3. 3 /**
  4. 4 * 制造闷倒驴和跑舌头
  5. 5 */
  6. 6 public Liqueur make(String type){
  7. 7 if ("mdl".equalsIgnoreCase(type)){
  8. 8 return new Mdl();
  9. 9 }else if ("pst".equalsIgnoreCase(type)){
  10. 10 return new Pst();
  11. 11 }else {
  12. 12 return null;
  13. 13 }
  14. 14 }
  15. 15 }

   

  测试:

  1. 1 public class LiqueurTest {
  2. 2
  3. 3 public static void main(String[] args){
  4. 4 MakeLiqueurFactory factory = new MakeLiqueurFactory();
  5. 5 Liqueur mdl = factory.make("mdl");
  6. 6 mdl.taste();
  7. 7 Liqueur pst = factory.make("pst");
  8. 8 pst.taste();
  9. 9 }
  10. 10 }

 

多方法简单工厂

  在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象。

  1. 1 public class MakeLiqueurFactory {
  2. 2
  3. 3 /**
  4. 4 * 制造闷倒驴
  5. 5 */
  6. 6 public Liqueur makeMdl(){
  7. 7 return new Mdl();
  8. 8 }
  9. 9
  10. 10 /**
  11. 11 * 制造跑舌头
  12. 12 */
  13. 13 public Liqueur makePst(){
  14. 14 return new Pst();
  15. 15 }
  16. 16 }

   

  测试:

  1. 1 public class LiqueurTest {
  2. 2
  3. 3 public static void main(String[] args){
  4. 4 MakeLiqueurFactory factory = new MakeLiqueurFactory();
  5. 5 Liqueur mdl = factory.makeMdl();
  6. 6 mdl.taste();
  7. 7 Liqueur pst = factory.makeMdl();
  8. 8 pst.taste();
  9. 9 }
  10. 10 }

 

静态方法简单工厂

  将上面的多个工厂方法模式里的方法置为静态的,不需要创建实例,直接调用即可。

  1. 1 public class MakeLiqueurFactory {
  2. 2
  3. 3 /**
  4. 4 * 制造闷倒驴
  5. 5 */
  6. 6 public static Liqueur makeMdl(){
  7. 7 return new Mdl();
  8. 8 }
  9. 9
  10. 10 /**
  11. 11 * 制造跑舌头
  12. 12 */
  13. 13 public static Liqueur makePst(){
  14. 14 return new Pst();
  15. 15 }
  16. 16 }

  

  测试:

  1. 1 public class LiqueurTest {
  2. 2
  3. 3 public static void main(String[] args){
  4. 4 Liqueur mdl = MakeLiqueurFactory.makeMdl();
  5. 5 mdl.taste();
  6. 6 Liqueur pst = MakeLiqueurFactory.makePst();
  7. 7 pst.taste();
  8. 8 }
  9. 9 }

  

  结果都是如下所示:  

  1. 1 我是闷倒驴,辣的!
  2. 2 我是跑舌头,苦的!

 

在以上的三种模式中,第一种如果传入的字符串有误,不能正确创建对象,第三种相对于第二种,不需要实例化工厂类,所以,大多数情况下,我们会选用第三种——静态工厂方法模式。

原文链接:http://www.cnblogs.com/yeshensi/p/11676371.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号