当前位置: 首页 > 面试题库 >

Eclipse RCP中的全局变量

昌正奇
2023-03-14
问题内容

我该如何解决:

我的主要RCP插件中有用户凭据信息。所有其他插件也应具有该信息。首选项存储是不可能的,因为前提存储也需要一个节点名,该节点名需要全局可用。

是否有可能实现全局变量?

谢谢!


问题答案:

有一些选择。

快速而肮脏的方法是将全局变量的吸气剂放入您的一个插件的激活器中。然后,您就可以像这样全局获取:

SomePluginActivator.getDefault().getGlobalData()

这具有使插件紧密耦合的缺点,这在一定程度上违背了插件体系结构的精神。

第二种方法是使用工作台服务。尽管它在org.eclipse.ui您的插件中引入了对它的依赖,但这会更好一些。在提供全局数据的插件中,创建的扩展org.eclipse.ui.services。您定义服务接口和服务工厂。工厂应返回该接口的实现。您的客户通过向服务定位器询问服务接口的实例来检索全局服务的实例。该平台使用您的工厂来创建服务实例:

IMyGlobalService service = (IMyGlobalService) PlatformUI.getWorkbench().getService(IMyGlobalService.class);

这是熟悉的服务定位器模式。这种方法的好处是,某些全局数据的使用者不需要知道数据的来源。为了增加灵活性,您可以在一个插件中声明接口,并在另一个插件中声明工厂和实现,以便可以换出实现。

第三种方法是使用扩展点。我自己还没有尝试过,但是看来您应该能够在提供全局数据的插件中声明扩展点,然后将全局数据注入到对其进行扩展的插件中。

最后一种方法是使用OSGi服务。我最不熟悉这种方法。您将编写OSGi服务,其他插件将使用OSGi框架来定位服务。这类似于上面的工作台服务,但是它不直接使用Eclipse
RCP。您还应该阅读有关白板图案的信息(警告:PDF链接)。



 类似资料:
  • 本文向大家介绍Lua中的全局变量、非全局变量总结,包括了Lua中的全局变量、非全局变量总结的使用技巧和注意事项,需要的朋友参考一下 前言 Lua将其所有的全局变量保存在一个常规的table中,这个table称为“环境”。这种组织结构的优点在于,其一,不需要再为全局变量创造一种新的数据结构,因此简化了Lua的内部实现;另一个优点是,可以像其他table一样操作这个table。为了便于实施这种操作,L

  • 问题内容: 如何在Java中定义全局变量? 问题答案: 要定义全局变量,你可以使用静态关键字 现在你可以通过调用从任何地方访问a和b

  • 我想使用大小为2的FIFO队列来存储数据流的元素。在任何情况下,我都需要流中的前一个元素,而不是当前元素。为此,我在流代码之外创建了一个队列,并将当前元素加入队列。当我的队列有两个元素时,我将其出列并使用第一个元素。 我面临的问题是,我不能加入队列,因为它是在我的流代码之外声明的。我想这是因为流使用多个JVM,我的队列将在一个JVM中声明。 下面是一个示例代码: 在这里,没有任何东西进入队列,队列

  • 问题内容: 假设我想创建一个sql脚本并执行以下操作: 我不能,因为@SomeVariable与他所属的批次一起死亡,而myProcedure需要它自己的批次。显然,我可以创建一个#temp表并在其中填充所需的任何值,但随后我必须从中选择- 添加代码,尽管琐碎,但会损害可读性,并且当我需要的只是一个全局变量时似乎很愚蠢。有没有更好的办法? 要痛苦地清除。我知道SQL Server具有称为“表”的“

  • 问题内容: 我在控制器的作用域上初始化变量时遇到问题。然后,当用户登录时,它将在另一个控制器中进行更改。此变量用于控制诸如导航栏之类的操作,并根据用户的类型来限制对网站某些部分的访问,因此保持其值很重要。它的问题是初始化它的控制器,再次通过某种方式被调用,然后将变量重置为其初始值。 我认为这不是声明和初始化全局变量的正确方法,也不是真正的全局变量,所以我的问题是什么是正确的方法,并且在使用当前版本

  • 我尝试创建一个Dart单页应用程序。 我已经创建了第一个自定义元素(),它包含整个应用程序。它有一个容器,用于呈现视图。和一个侧导航,它将包含用户信息,并在用户登录时更新。 我想在视图之间共享信息。如何在

  • 在TIBCO中有全局变量的概念,在Mulesoft中有相同的概念吗? 类似于设置全局变量,以便在运行时或基于环境的部署期间。穆勒索夫有类似的案例吗