我正在使用一个 Java API,该 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());
关于java - 扩展由另一个类实例化的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16814083/