【发布时间】:2015-11-17 10:05:20
【问题描述】:
我有一个处理数学运算符(+、*、-、/)的程序。我有一个接口 Operator,它有一个这样的计算方法:
public interface Operator
{
double calculate(double firstNumber,double secondNumber);
}
我有四个类(Plus、Minus、Divide、Multiply)实现了 Operator 接口,如下所示:
public class Plus implements Operator
{
public double calculate(double firstNumber,double secondNumber)
{
return firstNumber + secondNumber;
}
}
public class Minus implements Operator
{
public double calculate(double firstNumber,double secondNumber)
{
return firstNumber - secondNumber;
}
}
等等……
我用Map来处理算子:
static Map<String,Operator> operatorMap = new HashMap<String,Operator>();
static
{
operatorMap.put("+", new Plus());
operatorMap.put("-", new Minus());
operatorMap.put("*", new Multiply());
operatorMap.put("/", new Divide());
}
double output = operatorMap.get(op).calculate(firstNumber,secondNumber);
我应该像这样更改程序:
我有一个文件夹(myfolder)。每个人都可以获取接口并实现自己的运算符并将.class文件放入myfolder。我的程序也应该可以工作。这意味着对(+,*,-,/)的依赖应该删除从我的程序。 例如,有人获得操作员界面并实现 % 并将 .class 文件放在我的文件夹中,我的程序仍然应该工作(地图实现必须更改) 谁能帮我? 我很感激。
【问题讨论】:
-
您的问题是什么?您的代码看起来不错,并且您描述的与其他运营商的类文件中的人一起使用的设置听起来也不错。
-
可能是因为老师写了那部分 - 他在真正自己做某事时迷失了。
-
@Tim Biegeleisen 想象我实现了 %(我的程序不支持 %)并为 % 编译我自己的代码并将 .class 文件放在我的文件夹中(其他 .class 文件也在这个文件夹中)我的.class 文件中的程序应确定应选择哪个运算符
-
所以你的意思是你将为 new 运算符创建一个新类,程序应该自动选择它。对吗?
-
@Tarun Gupta 是的。我将 Operator(Plus.Minus,Divide,Multiply) 的最后一个实现放入 myfolder(.class 文件) 现在我实现 % 并将 .class 也放入 myfolder 我的程序应该动态选择了正确的运算符(应该删除对 Map 的依赖)
标签: java