Laughing

 

抽象工厂模式

意图:

     提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。

     使用条件:一系列接口有一系列的实现

         UML图:

         

 

例如:

      首先,建立productA、productB产品族的两个抽象类:

public abstract class productA

{

    public void productA(){System.out.println("productA");}

    public void f(){};

}

public abstract class productB
{
public void productB(){System.out.println("productB");}
    public void f(){};
}

//如果还有其他的抽象产品,在添加 一个 abstract class productC 即可。

其次,建立A、B的两个具体的产品类:

 

 

public class pA1 extends productA //抽象productA 的一个具体产品,还可以添加  class pA3等等

public pA1(){System.out.println("juti productA1");}

    public void f(){}; 

}

public class pA2 extends productA
{
public pA2(){System.out.println("juti productA2");}
public void f(){};
}
 
public class pB1 extends productB
{
public pB1(){System.out.println("juti productB1");}
public void f(){};
}
public class pB2 extends productB
{
public pB2(){System.out.println("juti productB2");}
public void f(){};
}
然后再建立一个抽象的工厂类,以便用继承来创建不同的工厂:
 
public abstract class abstractF
{
    public abstract productA creatorA();
    public abstract productB creatorB();
  //如果有productC ,在这里添加一个方法即可创建之
}
接着便是创建不同的工厂,以便造出不同的产品:

 

public class factory1 extends abstractF //如果有其他的具体产品,则添加factory3即可创建了

{

public productA creatorA(){return new pA1();}

public productB creatorB(){return new pB1();}

}

public class factory2 extends abstractF
{
public productA creatorA(){return new pA2();}
public productB creatorB(){return new pB2();}
}
最后就是一个测试类了:
 
public class test
{
public static void main(String[] args)
{
   factory1 a=new factory1();
   productA pa1=a.creatorA();pa1.productA();//通过一工厂创建第1种类的produtA;
   productB pb1=a.creatorB();
   factory2 b=new factory2();
   b.creatorA();                            //通过二工厂创建第2种类的productA;
   b.creatorB();
}
}

 

 

posted on 2011-12-30 09:47  巨富一生  阅读(201)  评论(0编辑  收藏  举报

导航