gpt4 book ai didi

java - 扩展由另一个类实例化的类

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:48:43 24 4
gpt4 key购买 nike

我正在使用一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com