Jea*_*ett 8 java constructor extends
我正在使用用于"宏"的Java API来自动化一个软件.除其他外,API还有类Simulation(全局状态)和FunctionManager.我无法修改这些类.
我想BetterFunctionManager上课,extends FunctionManager因为后者缺乏一些有用的功能.但我不知道该怎么做,因为FunctionManager无法直接实例化.它必须得到Simulation,像这样:
Simulation simulation = getCurrentSimulation();
FunctionManager functionManager = simulation.getFunctionManager();
Run Code Online (Sandbox Code Playgroud)
注意,Simulation也不能直接实例化; 它必须通过getCurrentSimulation()(当前模拟由宏解释器在运行时确定).
我不能垂头丧气; 以下抛出ClassCastException:
BetterFunctionManager betterFunctionManager = simulation.getFunctionManager();
Run Code Online (Sandbox Code Playgroud)
我该如何构建BetterFieldFunctionManager?
免责声明:我对设计仍然很天真。只是一个建议。使用委托设计模式
public class BetterFunctionManager{
private FunctionManager fm;
public BetterFunctionManager(FunctionManager fm){
this.fm = fm;
}
existingMethods(){
fm.existingMethods();
}
newMethods(){
// new implementation
}
}
Run Code Online (Sandbox Code Playgroud)
缺点:
需要包装FunctionManager的所有方法
优势:
其他地方不需要改变。只是改变像
BetterFunctionManager betterFunctionManager =
new BetterFunctionManager (simulation.getFunctionManager());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |