Я делаю свои первые шаги с GWT
. У меня есть вопрос после чтения:
В первом примере Presenter
определяет интерфейс для View
.
public class ContactsPresenter implements Presenter {
...
public interface Display extends HasValue> {
HasClickHandlers getAddButton();
HasClickHandlers getDeleteButton();
HasClickHandlers getList();
void setData(List data);
int getClickedRow(ClickEvent event);
List getSelectedRows();
Widget asWidget();
}
}
И во втором, View
определяет интерфейс для Presenter
.
public interface ContactsView {
public interface Presenter {
void onAddButtonClicked();
void onDeleteButtonClicked();
void onItemClicked(T clickedItem);
void onItemSelected(T selectedItem);
}
void setPresenter(Presenter presenter);
void setColumnDefinitions(List> columnDefinitions);
void setRowData(List rowData);
Widget asWidget();
}
Какова идея этого различия?
Который я должен выбрать?
Я думаю, вам следовало использовать слово «определяет» в своем вопросе вместо «реализует», и если это так, то не имеет значения, какой класс определяет интерфейс.
Вы можете сделать что-то другое, определив интерфейсы в его собственных файлах. В конце концов, все, что имеет значение, - это Presenter, реализующий интерфейс Presenter, и View, реализующий интерфейс View.
Во втором учебном курсе код был изменен на использование интерфейса Presenter (определенного в представлении), чтобы приспособиться к использованию универсальных шаблонов UiBinders и Java. Я думаю, что интерфейс Presenter был перемещен в интерфейс просмотра, поскольку они оба используют один и тот же общий T.