前言
说到工厂方法模式,就不得不提到简单工厂模式。后者违背了开放-封闭原则,所以才有了前者,即工厂方法模式。
场景
加减乘除计算器

工厂方法模式
定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例延迟到其子类。

代码示例
工厂接口
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]: 大话设计模式 程杰著 清华大学出版社
博客介绍了工厂方法模式,指出它是为解决简单工厂模式违背开放 - 封闭原则而产生。以加减乘除计算器为场景,阐述其定义,即定义创建对象接口,让子类决定实例化类,还给出工厂接口、各类运算工厂及客户端代码示例,说明了其克服简单工厂缺点并保持封装优点。
267

被折叠的 条评论
为什么被折叠?



