本文讲解三个主要概念,简单工厂、工厂方法模式、抽象工厂模式。
首先,简单工厂也即静态工厂,当然也可以不是,但是因为我们常常把简单工厂中产生对象的方法声明为static的,所以就有了静态的由来。简单工厂的实质就是一个工厂类根据传入的参数来决定到底该创建那个产品类的实例。简单工厂的有助于实现软件的一个结构化,但是,我们也将看到,工厂类来全权决定到底创建那个类的实例这种方式会让工厂类违反“高内聚”的原则,而且一旦要加入新的产品类进来,这个时候就不得不改变工厂类的实现。
例子如下:假设我们要做一个运算器:如下几步即可完成:
第一步:实现一个产品接口:
public interface Operation {
public double compute(double args0,double args1);
}
第二部:做出几个接口的实现:这里只写一个:
public class AddOperation implements Operation {
@Override
public double compute(double args0,double args1) {
return args0+args1;
}
}
第三步:传建一个工厂:根据传入的参数决定实例化那个产品对象。
public class OperationFactory {
public static Operation getOpe(String ope){
if("+".equals(ope)){
return new AddOperation();
}
if("-".equals(ope)){
return new MinusOperation();
}
if("*".equals(ope)){
return new MutilOperation();
}
if("/".equals(ope)){
return new DivOperation();
}
else return null;
}
}
第四步:最后就是如何使用工厂类了:
public class TestOpe {
private static Scanner scan = new Scanner(System.in);
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("input args0");
double a = scan.nextDouble();
System.out.println("input arg