bra*_*ebg 1 java gwt singleton gwt-gin dependency-injection
有些人可以解释一下.这是一些场景.
假设我有一个类模板,并在应用程序中使用Gin/Guice.
@Singleton
public class Template extends Compose
{
private HorizontalPanel header;
private HorizontalPanel content;
private VerticalPanel menu;
public Template()
{
this.add(initHeader());
this.add(initMenu());
this.add(initContent());
}
public void setContent(Widget widget)
{
content.clear();
content.add(widget);
}
.............
......
}
Run Code Online (Sandbox Code Playgroud)
在入门课堂上
........
public void onModuleLoad()
{
RootPanel.get().add(new Template());
....
}
Run Code Online (Sandbox Code Playgroud)
每次我需要重新加载我做的内容..
例如
HorizontalPanel hp = new HorizontalPanel();
hp.add ....
...
Template template = injector.getTemplate(); // return singleton instance using gin
template.setContent(hp)
Run Code Online (Sandbox Code Playgroud)
等等..
所以,模板是单例,据我所知,单个实例是每个虚拟机一个,意味着整个应用程序共享,对吧?模板类具有标题,菜单和内容,其目的是仅将内容部分重新加载为清理和添加小部件.但这是一个好方法吗?
例如,我们是否可能遇到类似用户"A"setContent(widgetA)的情况,但同时用户"B"使用方法setContent(widgetB),那么这里会发生什么?
谢谢,如果有人最终可以与我分享一个好的方法,并评论一个.
问候
Tho*_*yer 12
@Singleton是仅限Ginjector实例(是的,如果GWT.create()你GInjector两次,你会得到两个"单身").没有任何单一的意思GIN可以以某种方式"拦截"您new Template()的内容onModuleLoad,因此injector.getTemplate()将返回一个独特的template实例.(这与斯坦谈到的"单身代码反模式"完全不同,使用static状态)
没有什么魔力:GIN是一个代码生成器,它只编写您可以手动输入的代码.
至于你的其他问题:
| 归档时间: |
|
| 查看次数: |
6731 次 |
| 最近记录: |