在两个视图之间共享模型

时间:2014-10-15 11:21:48

标签: eclipse model eclipse-plugin eclipse-rcp rcp

我还在学习如何使用富客户端平台和窗口构建器。

我目前所拥有的是一个带有视图的简单插件项目,然后我添加了第二个视图,并且在perspetiveextensions扩展中,我做了它以便两个视图并排...

但现在问题是,我有这个模型提供者:

public enum ModelProvider {
    INSTANCE;

    List<Object> model;

    private ModelProvider {
        model = new ArayList<Object>();

        //make some objects here
        //add the objects to the list
    }

    public List<Object> getModel() {
        return model;
    }
}

问题是我想与两个视图共享这个模型,因为如果我去写这个: ModelProvider.INSTANCE.getModel() 并将其分配给每个视图中的某个列表,然后他们肯定会拥有自己的模型副本,我希望它能够被共享...

如何以这样一种方式初始化我的应用程序,使我的两个视图可以共享相同的模型......

也许在Application.java ??

抱歉这对我来说真的很新。

1 个答案:

答案 0 :(得分:1)

从外观上看,你使用的是单例设计模式。

导致List< Object >的引用首先需要是私有的,以防止任何形式的外部访问。

这样,如果没有setter或任何其他方式来访问和更改模型变量,如果您访问ModelProvider.INSTANCE.getModel(),您将收到相同的ArrayList< Object>。 Eclipse OSGI Equinox框架不会改变单例的预期行为

  • 如果两个视图都在SAME插件中,与ModelProvider一起,插件初始化将不重要。

  • 如果视图位于不同的插件中,这意味着ModelProvider所在的插件应该通过Require-Bundle指令在MANIFEST.MF文件中添加,或者是ModelProvider所在的包。 ,通过包含视图的插件中的Import-Package指令添加

我会根据你所谈论的情景编辑我的答案