抽象层Operation.java
public interface Operation {
int apply(int a, int b);
}
加法实现Addition.java:
public class Addition implements Operation {
@Override
public int apply(int a, int b) {
return a + b;
}
}
减法实现Subtraction.java
public class Subtraction implements Operation {
@Override
public int apply(int a, int b) {
return a - b;
}
}
乘法实现Multiplication.java
public class Multiplication implements Operation {
@Override
public int apply(int a, int b) { return a*b;
}
}
除法实现Division.java
public class Division implements Operation {
@Override
public int apply(int a, int b) { return a / b;
}
}
求余实现Modulo.java
public class Modulo implements Operation {
@Override
public int apply(int a, int b) { return a % b;
}
}
工厂类OperatorFactory.java
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
public class OperatorFactory {
static Map operationMap = new HashMap<>();
static {
operationMap.put("add", new Addition());
operationMap.put("divide", new Division());
operationMap.put("multiply", new Multiplication());
operationMap.put("subtract", new Subtraction());
operationMap.put("modulo", new Modulo());
}
public static Optional getOperation(String operation) {
return Optional.ofNullable(operationMap.get(operation));
}
}
使用示例
public int calculateUsingFactory(int a, int b, String operator) {
Operation targetOperation = OperatorFactory.getOperation(operator)
.orElseThrow(() -> new IllegalArgumentException("Invalid Operator"));
return targetOperation.apply(a, b);
}