【发布时间】:2011-03-19 13:14:16
【问题描述】:
我正在使用GWT 迈出第一步。
看完后有个问题:
在第一个示例中,Presenter 定义了View 的接口。
public class ContactsPresenter implements Presenter {
...
public interface Display extends HasValue<List<String>> {
HasClickHandlers getAddButton();
HasClickHandlers getDeleteButton();
HasClickHandlers getList();
void setData(List<String> data);
int getClickedRow(ClickEvent event);
List<Integer> getSelectedRows();
Widget asWidget();
}
}
在第二个中,View 定义了Presenter 的接口。
public interface ContactsView<T> {
public interface Presenter<T> {
void onAddButtonClicked();
void onDeleteButtonClicked();
void onItemClicked(T clickedItem);
void onItemSelected(T selectedItem);
}
void setPresenter(Presenter<T> presenter);
void setColumnDefinitions(List<ColumnDefinition<T>> columnDefinitions);
void setRowData(List<T> rowData);
Widget asWidget();
}
这个区别是什么意思?
我应该选择哪个?
【问题讨论】:
-
演示者应该能够修改视图。因此,演示者只需要维护对其视图的引用。我不明白如果视图和演示者相互实现会得到什么。
-
@Abhijeet Kashnia:这是两个不同的例子。检查链接,它们的作用相同,但实现方式不同。
-
即使在使用 Activity 和 Places 以及 MVP 的历史管理中,我们也有实现视图界面的 Activity! MVP 怎么样?