gpt4 book ai didi

java - 全局对象的成员变量也应该设为全局吗?

转载 作者:行者123 更新时间:2023-12-01 15:58:27 25 4
gpt4 key购买 nike

我正在 Eclipse 中开发插件,它要求对插件类使用单例模式才能访问运行时插件。该类保存对配置和资源等对象的引用。

In Eclipse 3.0 plug-in runtime objects are not globally managed and so are not generically accessible. Rather, each plug-in is free to declare API which exposes the plug-in runtime object (e.g., MyPlugin.getInstance()

为了让系统的其他组件访问这些对象,我必须执行以下操作:

MyPlugin.getInstance().getConfig().getValue(MyPlugin.CONFIGKEY_SOMEPARAMETER);

,在我看来,这过于冗长。

既然 MyPlugin 提供全局访问,那么对我来说,提供对其管理的对象的全局访问不是更容易吗?

MyConfig.getValue(MyPlugin.CONFIGKEY_SOMEPARAMETER);

有什么想法吗?

(我实际上是在问,因为我正在阅读整个“全局变量访问和单例是邪恶的”辩论)

最佳答案

Any thoughts?

是的,对于您正在检查的当前用例,您可以通过使用静态来稍微简化示例代码。

但请考虑使用静态的潜在缺点:

  • 如果在未来版本的 Eclipse Plugin 对象中是全局管理的怎么办?
  • 如果您想在相关插件中重用配置类怎么办?
  • 如果您想使用配置类的模拟版本进行单元测试怎么办?

此外,您还可以通过重构来减少代码的冗长;例如

... = MyPlugin.getInstance().getConfig().getValue(MyPlugin.CONFIGKEY_P1);
... = MyPlugin.getInstance().getConfig().getValue(MyPlugin.CONFIGKEY_P2);

变成了

MyConfig config = MyPlugin.getInstance().getConfig();
... = config.getValue(MyPlugin.CONFIGKEY_P1);
... = config.getValue(MyPlugin.CONFIGKEY_P2);

关于java - 全局对象的成员变量也应该设为全局吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4532766/

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