如果在之前写的简单工厂模式(四则运算)基础上,添加一个‘求M数的N次方’,我们需要改变工厂方法,添加‘Case’语句做判断,这样修改会违背开放-封闭原则。
这次,介绍工厂模式,为每个加减乘除方法添加一个工厂类,让客户动态地实例所需要的工厂类。
结构图:
工厂模式:定义一个用于创建对象的接口,让子类决定实例哪一个类。工厂方法使一个类的实例延迟到其子类。
在之前的简单工厂模式(四则运算)中添加以下几个工厂方法:
专门负责生产“+”的工厂
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 class Test {
public static void main(String[] args) {
IFactory operFactory = new AddFactory();
Operation operation = operFactory.CreateOperation();
double numberA = 3;
double numberB = 1;
System.out.println(operation.getResult(numberA, numberB));
}
}
输出结果:
4