使用反射机制改写简单工厂四则运算的代码
时间: 2023-10-29 14:30:04 浏览: 78
好的,我来帮你解答。
简单工厂模式是一种常用的设计模式,它通过一个工厂类来创建对象,而无需直接使用 new 关键字来创建对象。在四则运算的例子中,我们可以通过一个工厂类来创建加减乘除四种运算对象。
下面是一个简单工厂的实现:
```java
public class OperationFactory {
public static Operation createOperation(String operator) {
Operation operation = null;
switch (operator) {
case "+":
operation = new OperationAdd();
break;
case "-":
operation = new OperationSub();
break;
case "*":
operation = new OperationMul();
break;
case "/":
operation = new OperationDiv();
break;
}
return operation;
}
}
```
上述代码中,我们通过传入不同的运算符来创建不同的运算对象,但是这里存在一个问题,如果我们新增一种运算符,那么我们需要在工厂类中修改代码,这违反了开闭原则。
使用反射机制可以解决这个问题,我们可以通过反射来动态创建对象,而不需要修改代码。下面是使用反射机制改写的代码:
```java
public class OperationFactory {
public static Operation createOperation(String operator) {
Operation operation = null;
try {
Class<?> operationClass = Class.forName("com.example." + operator);
operation = (Operation) operationClass.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return operation;
}
}
```
这里我们使用了 Class.forName() 方法来获取运算类的 Class 对象,然后使用 newInstance() 方法来创建对象。这样,当我们新增一种运算符时,只需要创建一个对应的运算类,然后将类名传入工厂类即可。
需要注意的是,反射机制会影响代码的性能,所以在实际开发中需要慎重使用。
阅读全文