美文网首页
工厂模式(3)方法工厂模式

工厂模式(3)方法工厂模式

作者: 疯狂的JAVA | 来源:发表于2018-12-13 16:18 被阅读0次

         前言:经过前篇文章的学习,大家应该形成一种潜意识,那就是不管什么设计模

式,它的核心目的是为了解决开发中遇到的问题。完美的解决问题则需要遵循一些原则

比如开闭原则、单一原则、里氏替换原则、依赖倒转原则、接口隔离原则、迪米特法则

和合成复用原则,一句话设计模式为了程序的扩展性好,易于维护和升级。

        开发就像打仗一样,如果双方实力一样最开始会硬钢,但是如果一边人少还想赢

得战争只能想套路了,于是就有了《孙子兵法》《三十六计》,书里面告诉了我们应

该用什么计谋应对特定的情况,比如《三十六计》就有胜战计、敌战计、攻战计、混

战计、并战计、败战计,其实更多的时候是多种计谋一起使用,比如王允使用美人计

+连环计巧杀董卓。学习更多设计模式之后你还会面临设计模式选择的问题,比如金蝉

脱壳和走为上策有什么区别,关于这些就属于设计模式高深的内容了,请持续关注我

们设计模式后续的内容。。。

       

          问题描述:上次小张使用简单工厂模式完美的解决了埃及猫与波斯猫的创建问

                             题,而且小张感觉自己的代码是可以完美扩展的.

      public class TestEasyFactory {

                 public static void main(String[] args) {

                     //向工厂模式传参并创建对象

                   Cat cat = CatFactory.create(CatType.PersianCat);

                  }

      }

     class CatFactory {

                public static Cat create(CatType type) {

                            Cat cat = null;

                            //判断猫的类型创建对象

                           if (CatType.PersianCat == type) {

                                  cat = new PersianCat();

                           } else if (CatType.Egypt == type) {

                                 cat = new EgyptCat();

                            }

                  return cat;

             }

     }

    interface Cat {

     }

   class EgyptCat implements Cat {

             public void run() {

                  System.out.println("EgyptCat.run()");

             }

  }

     class PersianCat implements Cat {

              public void run() {

                   System.out.println("PersianCat.run()");

              }

     }

       enum CatType {

                  PersianCat, Egypt

      }

         但是随着越来越多猫的类型加入,小张发现自己的工厂判断代码要不断的更新

         判断逻辑,其实这暴露出两个问题

                 1、我们开发过的代码不应该被大量修改,如果三个程序员同时修改一个文件难

                       免出现不熟悉鄙人的业务而出现错误

                 2、如果产品太多不应该让一个工厂处理所有的创建,这会让这个工厂类变的

                       臃肿而增加控制成本,比如你不能依靠一个工厂创建奔驰的跑车和商务

                       车,而应该多个工厂各司其职

         小张意识到这个问题之后于是将代码修改如下

public class TestMethodFactory {

           public static void main(String[] args) {

                      //向工厂模式传参并创建对象

                     CatFactory factory = new EgyptCatFactory();

                     //创建猫对象

                     Cat cat = factory.create();

          }

}

interface Cat {

}

interface CatFactory {

            public Cat create();

}

class EgyptCat implements Cat {

          public void run() {

                      System.out.println("EgyptCat.run()");

         }

}

class EgyptCatFactory implements CatFactory {

           @Override

           public Cat create() {

                      return new EgyptCat();

           }

 }

class PersianCat implements Cat {

            public void run() {

                      System.out.println("PersianCat.run()");

             }

}

class PersianCatFactory implements CatFactory {

            @Override

            public Cat create() {

                        return new PersianCat();

            }

}

         通过对上述代码的观察,我们大概可以发现两件事情

                1、核心工厂类不会被别人修改,以后无论增加什么子类,只需要创建子类并

                     创建子类的工厂类即可


                2、以后每个对象创建都会由自己的工厂类实现,即使创建过程再复杂也不会

                      对别人的代码产生干扰,而且分工明确,扩展性极好

          以上两点就是方法工厂模式的核心思想

            天要下雨需求要变是阻拦不了的,现在宠物医院规模变大,增加了小狗类和小猫

 类,而且还分为观赏型和运动型宠物,将来有可能还会把老鼠加进来,那么你感觉这会给

小张的开发带来什么难点呢? 请继续关注我们后续的文章《工厂模式(4)抽象工厂模式》

相关文章

  • 设计模式 工厂模式

    工厂模式 工厂模式三大类1、简单工厂模式(静态工厂方法模式)2、工厂方法模式3、抽象工厂模式(Kit模式) 简单工...

  • 设计模式-工厂模式

    1、简单工厂模式 2、工厂方法模式 3、抽象工厂模式

  • 工厂模式

    3.工厂模式 按照业务场景划分:一、简单工厂模式,二、工厂方法模式,三、抽象工厂模式。 3.1 简单工厂模式 即静...

  • 设计模式-3种工厂模式

    工厂模式包括:简单工厂模式,工厂方法模式,抽象工厂模式 简单工厂模式 工厂方法根据参数直接创建实例:工厂->产品 ...

  • GOF23(java设计模式)--UML汇总

    1、单例模式(略)2、简单工厂模式(静态工厂模式) 3、工厂方法模式 6、原型模式 12、外观模式

  • 设计模式-工厂模式

    工厂模式概念 实例化对象,用工厂方法代替new操作。工厂模式包括工厂方法模式和抽象工厂模式。抽象工厂模式是工厂模式...

  • go闭包和工厂模式

    先说工厂模式,工厂模式有3种:简单工厂模式;工厂方法模式;抽象工厂模式。 go语言中的闭包已经在上一节golang...

  • 设计模式-工厂方法模式

    1、工厂方法模式(Factory Method) 工厂方法模式分为三种: 普通工厂模式 多个工厂模式 静态工厂模式...

  • 工厂模式

    工厂模式 就是工厂---生产-->产品 在设计模式中,分为 简单工厂模式, 工厂方法模式,抽象工厂模式. 工厂模式...

  • 第一章2.0工厂- 基础类准备

    2.1工厂-简单工厂模式2.2工厂-工厂方法模式2.3工厂-抽象工厂模式

网友评论

      本文标题:工厂模式(3)方法工厂模式

      本文链接:https://www.haomeiwen.com/subject/vtdbhqtx.html