Java设计模式之抽象工厂模式
2017-12-19 16:23
417 查看
抽象工厂模式(Abstract Factory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
抽象工厂模式是抽象工厂创建多个类型对象,以抽象的形式返回,工厂模式是创建单个对象,以抽象的形式返回。
利用反射改造简单工厂模式,去掉分支判断的逻辑:
public class OperationFactory {//利用反射改造简单工厂模式,去掉分支判断的逻辑
private static Map<String, Class<?>> allOperationMaps = new HashMap<String, Class<?>>();
public static void fillMap() {
allOperationMaps.put("+", OperationAdd.class);
allOperationMaps.put("-", OperationSub.class);
allOperationMaps.put("*", OperationMul.class);
allOperationMaps.put("/", OperationDiv.class);
}
public static Operation createOperation(String operator)
throws InstantiationException, IllegalAccessException {
Operation operation;
fillMap();
Class<?> operationClass = allOperationMaps.get(operator);
if (operationClass == null) {
throw new RuntimeException("unsupported operation");
}
operation = (Operation) operationClass.newInstance();
return operation;
}
}
客户端:
public class Client {//客户端
public static void main(String[] args) throws InstantiationException,
IllegalAccessException {
Operation operation = OperationFactory.createOperation("/");
operation.numberA = 7;
operation.numberB = 8;
System.out.println(operation.result());
}
}运行结果:
0.875
抽象工厂模式是抽象工厂创建多个类型对象,以抽象的形式返回,工厂模式是创建单个对象,以抽象的形式返回。
利用反射改造简单工厂模式,去掉分支判断的逻辑:
public class OperationFactory {//利用反射改造简单工厂模式,去掉分支判断的逻辑
private static Map<String, Class<?>> allOperationMaps = new HashMap<String, Class<?>>();
public static void fillMap() {
allOperationMaps.put("+", OperationAdd.class);
allOperationMaps.put("-", OperationSub.class);
allOperationMaps.put("*", OperationMul.class);
allOperationMaps.put("/", OperationDiv.class);
}
public static Operation createOperation(String operator)
throws InstantiationException, IllegalAccessException {
Operation operation;
fillMap();
Class<?> operationClass = allOperationMaps.get(operator);
if (operationClass == null) {
throw new RuntimeException("unsupported operation");
}
operation = (Operation) operationClass.newInstance();
return operation;
}
}
客户端:
public class Client {//客户端
public static void main(String[] args) throws InstantiationException,
IllegalAccessException {
Operation operation = OperationFactory.createOperation("/");
operation.numberA = 7;
operation.numberB = 8;
System.out.println(operation.result());
}
}运行结果:
0.875
相关文章推荐
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- java 设计模式 学习笔记(3) 抽象工厂模式
- JAVA系列-设计模式-抽象工厂模式
- java设计模式--抽象工厂模式
- Java设计模式笔记(3)抽象工厂模式
- JAVA设计模式之抽象工厂模式
- JAVA设计模式之抽象工厂模式
- JAVA设计模式 — 抽象工厂模式(Abstract Factory)
- java23种设计模式-----简单工厂模式、工厂方法模式、抽象工厂模式的区别
- Java设计模式 —— 抽象工厂模式 (Abstract Factory)
- Java设计模式之抽象工厂模式
- Java23种设计模式案例:抽象工厂模式(abstractFactory)
- java设计模式2——抽象工厂模式(Abstract Factory)
- JAVA设计模式是个什么玩意儿_02_抽象工厂模式
- Java设计模式-抽象工厂模式
- JAVA设计模式之抽象工厂模式
- java设计模式之抽象工厂模式学习
- 《学习笔记》之JAVA设计模式--抽象工厂模式
- java设计模式之抽象工厂模式
- Java设计模式之抽象抽象工厂模式