Вполне возможно. Используется, например, в Swing (Java) или GWT (Java). События не обязательно должны быть встроены в язык и быть в нём first-class citizen. Например, в GWT обработчик события описывается следующим образом:
public interface ILoginView {
String getUsername();
String getPassword();
}
public interface ILoginPresenter() {
void onLogin();
}
public final class LoginView extends Composite implements ILoginView {
// ...
@UiField TextBox username;
@UiField PasswordTextBox password;
private final ILoginPresenter loginPresenter = ...;
// ...
@Override public String getUsername() { return username.getText(); }
@Override public String getPassword() { return password.getText(); }
@UiHandler("login") public void onLoginClick(ClickEvent e) { presenter.onLogin(); }
// ...
}
Аннотация
@UiHandler
обрабатывается фреймворком. Можно, конечно, и обойтись менее декларативным подходом и регистрировать обработчики вручную через какой-нибудь
addXXXListener()
, как это делается в Swing.
View без событий тоже может существовать, когда от пользователя не требуется никакой обратной реакции: например, обычный какой-нибудь
ISummaryView
, который просто отображает несколько строк текста.