gpt4 book ai didi

eclipse - Eclipse RCP 应用程序中的 "global"数据存储在哪里?

转载 作者:行者123 更新时间:2023-12-02 17:11:23 24 4
gpt4 key购买 nike

我是 Eclipse RCP 的初学者,我正在尝试为自己构建一个应用程序来尝试一下。我对如何实际处理模型对象感到困惑。我找到的所有例子都无法解决我遇到的问题,所以我怀疑我处理问题的方式是错误的。

假设我需要使用一个保存经过身份验证的用户信息的类来初始化应用程序。我使用我的 WorkbenchWindowAdvisor (错误的地方?)执行一些初始化(例如身份验证)来决定显示哪个 View 。完成后,将显示一个 View 。现在,该 View 需要访问我之前检索/生成的用户信息。

问题是,该 View 应该如何获取该数据?该 View 连接在 plugin.xml 中。我看不出有什么方法可以将数据提供给 View 。所以我假设 View 必须以某种方式检索它。但是它从哪里检索它的正确位置呢?我想过将静态变量放入 IApplication 实现中,但这感觉不对。非常感谢任何建议或指示。谢谢。

最佳答案

我认为您在这里面临的问题与 RCP 无关。它更多的是一个建筑问题。您的观点与业务逻辑紧密相连!该解决方案可以通过两种(常见)设计模式来完成:

  1. 模型- View - Controller (MVC)
  2. 模型- View -呈现器 (MVP)

您可以在网络上找到大量相关信息。我将使用 MVP 为您的特定问题指出一个可能的解决方案。

您将需要创建多个项目。其中之一当然是 RCP 插件,我们称之为 rcp.view。现在,您创建另一个,它不提供 UI 贡献(仅从 org.eclipse.core.runtime 开始),并将其命名为 rcp.presenter。为了简化事情,这个插件也将成为目前的模型。

后续步骤:

  1. 将 rcp.presenter 添加到rcp.view 的依赖(其重要的是演示者没有引用 View )
  2. 导出您所在的所有包将在 rcp.presenter 中创建所以它们是可见的
  3. 在rcp.presenter中创建一个接口(interface)IPerspective 有一些方法例如 (showLogiDialog()、showAdministratorViews(用户用户)、showStandardViews(用户用户))
  4. 创建一个类 PerspectivePresenter,在构造函数中采用 IPerspective 并将其保存在属性中
  5. 在 rcp.view 中转到您的 Perspective,实现您的界面 IPerspective,并在构造函数中创建一个新引用 presenter = new PerspectivePresenter(this)
  6. 调用presenter.load()并且implenent演示者中的内容可能是这样的

代码:

public void load()
{
User user = view.showLoginDialog(); // returns a user with the provided name/pw
user.login(); // login to system/database
if(user.isAdministrator())
view.showAdministratorViews(user);
else
view.showStandardViews(user);
}

如您所见, View 只是创建对演示者的引用,演示者负责所有业务逻辑,演示者告诉 View 要显示什么。因此,在您的视角中,您可以实现这些接口(interface)函数,并且在每个函数中,您都可以以不同的方式设置您的视角。

对于每个 View ,它都以相同的方式进行,您将需要一个 View 的演示者来执行操作并告诉 View (使用界面)显示什么并传递最终数据。 View 不关心逻辑。当使用 JFace-Databindings 时,这也非常有用(然后只有绑定(bind)数据传递到 View )。例如,WorkbenchWindowAdisor 将只创建应用程序中所需的所有内容。其他 View 、透视图可以根据它们获得的数据启用/禁用菜单等(例如,当 isAdministrator 时,您可能想要启用特殊的 adminMenu)。

我知道这是一个相当繁重的方法,但 Eclipse RCP 是为大型(顾名思义,丰富)应用程序而设计的。所以你应该花一些时间在正确的架构上。我的第一个 RCP 应用程序就像您所描述的那样......我从来不知道在哪里存储东西以及如何处理所有引用。在工作中我了解了 MVP(而且我仍在学习中)。理解这个概念需要一段时间,但这是值得的。

您可能想查看my second post at this question了解如何构建插件的另一个想法。

关于eclipse - Eclipse RCP 应用程序中的 "global"数据存储在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1245833/

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