前言
说到工厂方法模式,就不得不提到简单工厂模式。后者违背了开放-封闭原则,所以才有了前者,即工厂方法模式。
场景
加减乘除计算器
工厂方法模式
定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例延迟到其子类。
代码示例
工厂接口
public interface IFactory {
Operation createOperation();
}
加法类工厂
public class AddFactory implements IFactory {
@Override
public Operation createOperation() {
return new OperationAdd();
}
}
减法类工厂
public class SubFactory implements IFactory {
@Override
public Operation createOperation() {
return new OperationSub();
}
}
乘法类工厂
public class MulFactory implements IFactory {
@Override
public Operation createOperation() {
return new OperationMul();
}
}
除法类工厂
public class DivFactory implements IFactory {
@Override
public Operation createOperation() {
return new OperationDiv();
}
}
客户端
public static void main(String[] args) throws Exception {
IFactory operFactory = new AddFactory();
Operation oper = operFactory.createOperation();
oper.set_numberA(1);
oper.set_numberB(2);
double result = oper.GetResult();
System.out.println("result:" + result);
}
优点
克服了简单工厂违背开放-封闭原则的缺点,又保持了封装对象创建过程的优点。
参考资料
[1]: 大话设计模式 程杰著 清华大学出版社