我在評估是否CDI事件可能對我的新應用程序有意義。到目前爲止,我一直使用MVP
體系結構,其中View
僅具有UI元素,並將它們公開在公共getter中,而Presenter
註冊會單擊它們上的偵聽器。MVP - 註冊點擊監聽器或使用CDI事件?
我來到CDI Events
左右,想直接點擊View
類中的點擊事件,並且在我的Presenters
中只有observe
這些事件。
你能告訴我哪種方法更好嗎?或者你爲什麼總體上選擇了另一種方法?
MVP:
class LoginView {
private Button loginButton;
public void getButton() {
return loginButton;
}
}
class LoginPresenter {
@Inject
private LoginView view;
public LoginPresenter() {
view.getButton.addClickListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
//perform the login business logic
}
});
}
}
CDI活動:
class LoginView {
private Button loginButton;
@Inject
private Events<LoginEvent> events;
public LoginView() {
loginButton.addClickListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
events.fire(new LoginEvent("login"));
}
});
}
}
class LoginPresenter {
private void listenLogin(@Observes LoginEvent evt) {
//perform the login business logic
}
}
class LoginEvent extends EventObject {
public LoginEvent(String source) {
super();
}
}
(本例使用Vaadin,但框架的選擇不應該的問題,我一般問題)
要我的主要區別是:CDI不需要用戶界面的getter,也不需要查看成員變量e發言人。缺點是,我需要爲每個要觸發的事件創建一個額外的事件類。
原來,我正在尋找。 – membersound