Estoy dando mis primeros pasos con GWT
. Tengo una pregunta después de la lectura:MVP: ¿Debería la View implementar la interfaz de un presentador o viceversa?
En el primer ejemplo el Presenter
define el interfaz para la 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();
}
}
Y en el segundo, el View
define el interfaz para la 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();
}
¿Cuál es la idea de esta diferencia?
¿Cuál debería elegir?
Un presentador debe ser capaz de modificar la vista. Entonces, el presentador solo necesita mantener una referencia a sus puntos de vista. No entiendo qué se ganaría si la vista y el presentador se implementaran entre sí. –
@Abhijeet Kashnia: Estos son dos ejemplos diferentes. Verifique los enlaces, hacen lo mismo pero se implementan de manera diferente. – Macarse
¡Incluso en la gestión de historial con Activity and Places y MVP tenemos actividad implementando una interfaz de visualización! ¿Cómo es ese MVP? –