全局对象的成员变量是否也应该是全局的?

我正在开发Eclipse中的插件,它要求Plugin类使用单例模式来访问运行时插件。该类保存对诸如Configuration和Resources之类的对象的引用。   在Eclipse 3.0插件运行时对象中   不是全球管理的,所以也是如此   通常无法访问。相反,   每个插件都可以自由声明API   这暴露了插件运行时   对象(例如,MyPlugin.getInstance() 为了让我的系统的其他组件访问这些对象,我必须执行以下操作:
MyPlugin.getInstance().getConfig().getValue(MyPlugin.CONFIGKEY_SOMEPARAMETER);
,这是过于冗长的IMO。 由于MyPlugin提供了全局访问权限,因此我不仅可以更轻松地提供对其管理的对象的全局访问权限吗?
MyConfig.getValue(MyPlugin.CONFIGKEY_SOMEPARAMETER);
有什么想法吗? (我实际上是在问,因为我正在阅读整个“全球变量访问和单身人士是邪恶的”辩论)     
已邀请:
  有什么想法吗? 是的,对于您正在检查的当前用例,您可以通过使用静态来略微简化示例代码。 但想想使用静力学的潜在缺点: 如果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);
    
你建议
MyPlugin.getInstance().getConfig().getValue(MyPlugin.CONFIGKEY_SOMEPARAMETER);
太冗长了
MyConfig.getValue(MyPlugin.CONFIGKEY_SOMEPARAMETER);
可能会更好。按照这个逻辑,不会:
getMyConfigValue(MyPlugin.CONFIGKEY_SOMEPARAMETER):
更好(也许不短,但更简单)?我建议你写一个本地帮手方法。 这为您提供了可读性的优势,而不会绕过那些通过修复代码完成简单/简单/简单方式的人精心设计的概念。 通常全局变量在任何情况下都非常讨厌。单身人士也是一个不起眼的概念,但他们在一堂课中打破了公共静止的局面。 考虑一下如何模拟这样一个类。嘲弄公共静态是非常令人讨厌的。嘲弄单身人士很难(你必须在每个使用它的方法中覆盖你的吸气剂)。依赖注入是下一个层次,但它可以是DI和一些简单单例之间的触摸调用。     

要回复问题请先登录注册