如果具有相同接口的类具有相似但方法签名不同,该怎么办?
假设我有一个项目来计算不同的成本(最后得到总成本)。
在我的程序中,有几个计算器类,即ACostCalculator
,BCostCalculator
等等。当calculate()
调用方法来计算成本时,成本容器也将传递给那些成本计算器。在一个好的情况下,我可以CostCalculator
为每个成本计算器创建一个接口。
但是,针对不同成本的计算需要不同的资源。在我当前的程序中,它类似于:
//getResource() are costly method while several costs need this. So do it outside calculate() method.
ResourceA resourceA = getResourceA();
ResourceB resourceB = getResourceB();
CostContainer costContainer = new CostContainer();
CostCalculator aCostCalculator = new ACostCalculator();
...
CostCalculator eCostCalculator = new ECostCalculator();
aCostCalculator.calculate(costContainer);
bCostCalculator.calculate(costContainer)
cCostCalculator.calculate(costContainer, resourceA);
dCostCalculator.calculate(costContainer, resourceA);
eCostCalculator.calculate(costContainer, resourceA, resourceB);
如果签名完全相同,我可以方便地循环执行一次。但是,由于它们相似但又不同,所以我什至无法建立一个好的界面。
我不确定是否有好的方法。我能想到的是将所有calculate()
方法推广到
calculate(CostContainer costContainer, List<Object> resources);
有任何想法吗?谢谢回答。
如果资源在计算器的整个生命周期中保持不变:请将资源传递给计算器的构造函数。
ResourceA resourceA = getResourceA();
ResourceB resourceB = getResourceB();
CostContainer costContainer = new CostContainer();
CostCalculator aCostCalculator = new ACostCalculator();
CostCalculator bCostCalculator = new BCostCalculator();
CostCalculator cCostCalculator = new CCostCalculator(resourceA);
CostCalculator dCostCalculator = new DCostCalculator(resourceA);
CostCalculator eCostCalculator = new ECostCalculator(resourceA, resourceB);
aCostCalculator.calculate(costContainer);
bCostCalculator.calculate(costContainer);
cCostCalculator.calculate(costContainer);
dCostCalculator.calculate(costContainer);
eCostCalculator.calculate(costContainer);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句