我尝试用MVP范例构建一个Webapp.因为我希望API干净并使一切都易于测试,我尝试通过Contructor Injection注入所有可能的东西.现在我来到了一个可以看到多个Textfields的视图.当数据库中存在值时,这些文本字段会被演示者填充,因此我的演示者需要视图的引用,但是vie显然也需要引用者的引用.CDI告诉我将Presenter注入到视图中,否则由于循环依赖性而无法实现.是否可以通过setter方法避免在视图中设置演示者?代码看起来像这样:
视图:
public Class ViewImpl implements view {
private PresenterImpl presenter;
private User user;
@Inject
public ViewImpl(PresenterImpl presenter, User user) {
super();
this.presenter = presenter;
this.user = user;
}
public void attach() {
super.attach();
presenter.fetchNames();
showUser();
}
public void setUser(User user) {
this.user = user;
}
}
Run Code Online (Sandbox Code Playgroud)
主持人:
public Class PresenterImpl implements Presenter {
private ViewImpl view;
private User user;
@Inject
public PresenterImpl(ViewImpl view, User user) {
this.view = view;
this.user = user;
}
public void fetchNames() {
fetchFromDB(); …Run Code Online (Sandbox Code Playgroud)