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:      }
          抽象工厂模式,对工厂方法的衍生,对更一般事务的抽象。
  • 相关阅读:
    程序媛计划——mysql连接表
    程序媛计划——mysql修改表结构
    程序媛计划——mysql 插入、查找、修改、删除数据
    程序媛计划——mysql基本操作
    程序媛计划——python爬虫
    程序媛计划——SQLite初级
    程序媛计划——python中级课时1
    Android解析XML
    Android之Widget学习总结
    Android之View和SurfaceView
  • 原文地址:https://www.cnblogs.com/haichao/p/3448019.html
Copyright © 2011-2022 走看看