设计模式-- 工厂模式(Factory)
工厂模式中包括:工厂方法(Factory Method)和抽象工厂(Abstract Factory)
这两个模式区别在于需要创建对象的复杂程度上。
如果我们创建的对象类型是一种类型,如下例所示:
Sample是一个接口,创建他的不同子类:
Sample mysample=new MySample();
Sample hissample=new HisSample();
如果子类很多种,就需要很多行这样的构造方法去创建,这个时候就可以用到工厂模式中的工厂方法:
public class Factory{
public static Sample creator(int which){
//getClass 产生Sample 一般可使用动态类装载装入类。
if (which==1)
return new SampleA();
else if (which==2)
return new SampleB();
}
}
当创建的对象类型很复杂时候,在factory中不但要创佳sampleA,还要创建 exampleA,
而sampleA 和 exampleA 来源于不同的父类Sample 和 Example 。这个时候就需要针对Sample 和 Example 创建不同的Factory
SampleFactory 和 ExampleFatory。代码如下所示:
public abstract class Factory{
public abstract Sample creator();
public abstract Sample2 creator(String name);
}
public class SimpleFactory extends Factory{
public Sample creator(){
.........
return new SampleA
}
public Sample2 creator(String name){
.........
return new Sample2A
}
}
public class ExampleFatory extends Factory{
public Sample creator(){
......
return new ExampleB
}
public Sample2 creator(String name){
......
return new Example2B
}
}