zoukankan      html  css  js  c++  java
  • 工厂模式(Factory)

    接下来我将写点设计模式的,大部分是从各位名家看到的,当然会间杂自己的一些理解。

    做知识的过滤器和搬运工

    工厂模式有三种,分别是简单工厂模式工厂方法抽象工厂模式,属于创建型模式。当然没有最好,只有最合适。

    简单工厂模式

            根据传入的参数创建对象。

    UML:

    image

           

    代码:

       1:  public static void main(String[] args) {
       2:          Person chineser=PersonFactory.getPerson("Chinese");
       3:          Person american=PersonFactory.getPerson("American");
       4:          System.out.println(chineser.sayHello("张三"));
       5:          System.out.println(american.sayHello("张三"));
       6:          /*
       7:           * 你好,张三
       8:          *  hello,张三
       9:           */
      10:      }
          工厂类相当于上帝类,提供静态方法来创建所有产品(这里是中国人、美国人),你叫他造中国人就造中国人,你的话就是传入参数,这可以是字符串,也可以是枚举。
     

    工厂方法

          专一工厂出现。

    UML:

    image

    代码:

       1:   public static void main(String[] args) {
       2:          IAnimalFactory catFactory=new CatFactory();
       3:          IAnimal cat=catFactory.createAnimal();
       4:          cat.eat();
       5:          
       6:          IAnimalFactory dogFactory=new DogFactory();
       7:          IAnimal dog=dogFactory.createAnimal();
       8:          dog.eat();
       9:          
      10:          /*
      11:           * cat eating!
      12:           * dog eating!
      13:           */
      14:      }
      在简单工厂上有所优化,去除了上帝类,增加专职工厂,不同工厂只管生产一个产品。不同工厂的区别在工厂创建时产生。
       

    抽象工厂模式

           产品族概念产生。

    UML:

    image

    代码:

       1:  public static void main(String[] args) {
       2:          IAnimalFactory blackAnimalFactory=new BlackAnimalFactory();
       3:          ICat blackCat=blackAnimalFactory.createCat();
       4:          blackCat.eat();
       5:          IDog blackDog=blackAnimalFactory.createDog();
       6:          blackDog.bark();
       7:          
       8:          IAnimalFactory whiteAnimalFactory=new WhiteAnimalFactory();
       9:          ICat whiteCat=whiteAnimalFactory.createCat();
      10:          whiteCat.eat();
      11:          IDog whiteDog=whiteAnimalFactory.createDog();
      12:          whiteDog.bark();
      13:  //        The black cat is eating!
      14:  //        The black dog is barking!
      15:  //        The White cat is eating!
      16:  //        The White dog is barking!
      17:      }
          抽象工厂模式,对工厂方法的衍生,对更一般事务的抽象。
  • 相关阅读:
    The Mac Application Environment 不及格的程序员
    Xcode Plugin: Change Code In Running App Without Restart 不及格的程序员
    The property delegate of CALayer cause Crash. 不及格的程序员
    nil localizedTitle in SKProduct 不及格的程序员
    InApp Purchase 不及格的程序员
    Safari Web Content Guide 不及格的程序员
    在Mac OS X Lion 安装 XCode 3.2 不及格的程序员
    illustrate ARC with graphs 不及格的程序员
    Viewing iPhoneOptimized PNGs 不及格的程序员
    What is the dSYM? 不及格的程序员
  • 原文地址:https://www.cnblogs.com/haichao/p/3448019.html
Copyright © 2011-2022 走看看