设计模式之工厂模式(简单工厂,工厂,抽象工厂)

     工厂模式属于创建型模式中我们接触得比较多的一种模式,在我毕业的时候是SSH最流行的时候,其中的Spring就使用了工厂模式,Spring上下文就是相当于工厂类,通过上下文就可以拿到我们在xml中配置的类的实例。

  工厂模式分为:简单工厂,工厂和抽象工厂。

      简单工厂模式是由一个具体的工厂类,一个产品的接口或是抽象加上一个或多个具体的产品实现组成的。

  public interface Product{

  public Product createProduct();

  }

  public Class ProductA implements Product{

      public Product createProduct(){

        // 经过一系列操作创建一个对象

                System.out.print("A产品创建");

         return new ProductA();

      }

  }

  public Class ProductB implements Product{

                public Product createProduct(){

        // 经过一系列操作创建一个对象

      System.out.print("B产品创建");

         return new ProductB();

      }

      }

  public Class Factory{

      public Product getProduct(String productName){

    if("ProductA".equals(productName)){

      return ProductA().CreateProduct();

            }else if("ProductB".equals(productName)){

       return ProductB().CreateProduct();

            }else{

      return null;

            }

  }

      }

      public Class Client{

         new Factory().getProduct("ProductA");

       }

简单工厂模式的好处在于,对于客户端而言,完全不需要了解对象的创建过程,只需要使用就可以了。

在简单工厂中,我们发现,如果需要在增加一个产品时,就需要更改原来的工厂类中的逻辑,这违背了开闭原则中的对修改关闭。

这时候就引入了工厂模式,工厂模式中,将Factory类抽象化了,我们将它设计为一个接口IFactory。在需要增加一个新的产品时,就可以通过实现IFactory接口,创建一个新的工厂类来提供新的产品。

工厂模式虽然提高的了扩展性,同样的也会引入大量的工厂类,所以在使用过程中是需要衡量的。

抽象工厂,是针对多个互相影响的产品族产生的一个模式,在抽象工厂中,抽象的产品是一个而是一组,每一个抽象产品代表一个产品族,它们之间是有关系的。在工厂抽象中,我们定义每个产品族的创建。产品的具体实现由它们的实现类完成。

简单工厂,工厂和抽象工厂都是创建类模式,它们的目的都是为了创建对象,便于对象管理,降低代码耦合。

posted @ 2014-04-17 14:24  hyiam  阅读(212)  评论(0编辑  收藏  举报