我正在使用用于“宏”的Java API来使一个软件自动化。该API除其他外,还具有Simulation
(排序的全局状态)和FunctionManager
类。我无法修改这些类。
我想创建一个BetterFunctionManager
类extends FunctionManager
,因为后者缺少一些有用的功能。但是我不知道该怎么做,因为FunctionManager
无法直接实例化。必须从Simulation
获得,如下所示:
Simulation simulation = getCurrentSimulation();
FunctionManager functionManager = simulation.getFunctionManager();
注意
Simulation
也不能直接实例化。它必须通过getCurrentSimulation()
获得(当前的仿真是在运行时由宏解释器确定的)。我不能灰心;以下引发ClassCastException:
BetterFunctionManager betterFunctionManager = simulation.getFunctionManager();
如何构造
BetterFieldFunctionManager
? 最佳答案
免责声明:我对设计仍然很幼稚。只是一个建议。使用delegation design pattern
public class BetterFunctionManager{
private FunctionManager fm;
public BetterFunctionManager(FunctionManager fm){
this.fm = fm;
}
existingMethods(){
fm.existingMethods();
}
newMethods(){
// new implementation
}
}
缺点:
需要包装FunctionManager的所有方法
优势:
无需在其他任何地方进行更改。只是改变像
BetterFunctionManager betterFunctionManager =
new BetterFunctionManager (simulation.getFunctionManager());