维基百科
工厂方法模式(英语:Factory method pattern)是一种实现了“工厂”概念的面向对象设计模式。就像其他创建型模式一样,它也是处理在不指定对象具体类型的情况下创建对象的问题。工厂方法模式的实质是“定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行。”
操作对象
public class Operation {
private int a;
private int b;
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public int getB() {
return b;
}
public void setB(int b) {
this.b = b;
}
public int getResult() throws Exception {
return 0;
}
}
抽象工厂接口
public interface IFactory {
Operation createOpration();
}
加法
public class Add extends Operation{
@Override
public int getResult() throws Exception {
return getA() + getB();
}
}
加法创建工厂
public class AddFactory implements IFactory{
@Override
public Operation createOpration() {
return new Add();
}
}
减法
public class Sub extends Operation{
@Override
public int getResult() throws Exception {
return getA() - getB();
}
}
减法创建工厂
public class SubFactory implements IFactory{
@Override
public Operation createOpration() {
return new Sub();
}
}
客户端
public class Main {
public static void main(String[] args) throws Exception {
IFactory factory = new AddFactory(); //如果要进行减法操作,只需要创建SubFactory实例,别的地方不需要修改
Operation operation = factory.createOpration();
operation.setA(1);
operation.setB(2);
System.out.println(operation.getResult());
}
}
和简单工厂模式相比,工厂模式多了一个抽象工厂接口,并且每增加一个操作,就要相应的增加一个产品工厂类。
工厂方法把选择逻辑放在客户端,客户端进行什么操作就选择创建对应的工厂方法。