设计模式之禅-工厂模式

工厂模式:

  define an interface for creating an object, but let sub classes decide which class to instantiate.factory method lets a class defer instantiation to subclasses.(定义一个用于创建对象的接口,让子类决定实例化哪一个类、工厂方法使一个雷的实例化延迟到了子类)

模版:

 

 //抽象产品类

  public abstract class Product {

    //产品类的公公方法

    public  void method1(){

      //逻辑实现

    }

 

    public abstract void method2();

  }

   //具体产品

  public class ConcreteProduct1 extends Product {

    public void method2(){

      //业务逻辑处理

    }

  }

  

  public class ConcreteProduct2 extends Product {

    public void method2(){

      //业务逻辑处理

    }

  }

  //抽象工厂(定义继承,向上转型,去掉则转化为简单工厂模式)

  public abstract class Creator {

    public abstract <T extends Product> T createProduct(Class<T> c);

  }

  //具体工厂

  public class concreteCreator extends Creator {

    public <T extends Product> T createProduct(Class<T> c){

      Product product = null;

      try {

        product =(Product) Class.forname(c.getName()).newInstance();

      }catch(Exception e){

        //异常处理

      }

      return (T) product;

    }

  }

  //场景

  public class Client {

    public static void main(String[] arg){

      Creator creator = new ConcreteCreator();

      Product product = creator.createProduct(ConcreteProduct1.class);

      //继续处理
    }

  }

 

  优点:1.良好的封装性,代码结构清晰;2.屏蔽产品类。3.解耦,高层模块孩子需要知道产品的抽象类,其他实现可以不用关心。

posted @ 2012-06-10 19:12  风叉叉  阅读(149)  评论(0编辑  收藏  举报