我还在学习如何使用富客户端平台和窗口构建器。
我目前所拥有的是一个带有视图的简单插件项目,然后我添加了第二个视图,并且在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 ??
抱歉这对我来说真的很新。答案 0 :(得分:1)
从外观上看,你使用的是单例设计模式。
导致List< Object >
的引用首先需要是私有的,以防止任何形式的外部访问。
这样,如果没有setter或任何其他方式来访问和更改模型变量,如果您访问ModelProvider.INSTANCE.getModel()
,您将收到相同的ArrayList< Object>
。
Eclipse OSGI Equinox框架不会改变单例的预期行为
如果两个视图都在SAME插件中,与ModelProvider一起,插件初始化将不重要。
如果视图位于不同的插件中,这意味着ModelProvider所在的插件应该通过Require-Bundle
指令在MANIFEST.MF文件中添加,或者是ModelProvider所在的包。 ,通过包含视图的插件中的Import-Package
指令添加
我会根据你所谈论的情景编辑我的答案