Я начал проект GWT, я решил попробовать UiBinder.Я испытываю трудности с укладкой шаблона MVP поверх UiBinder.
Когда я использовал GWT-pure-java: я использовал Джин, чтобы внедрить моего докладчика в соответствующее представление.Это было довольно просто, и если бы я хотел передать идентификатор в докладчика, то я бы просто передал идентификатор в конструктор докладчика.
Не так просто с UiBinder.Я почти уверен, что что-то упустил, потому что многие люди утверждают, что UiBinder и MVP - это совпадение, созданное на небесах ... поэтому я надеюсь получить несколько убедительных ответов на этот запрос; -)
То, что я видел в нескольких простых примерах GWT-UiBinder, заключается в том, что представление создается с помощью связывателя, а затем либо:
- Представление создает презентатор либо в его конструкторе, либо через
@UIFactory
method. - Соответствующий презентатор передается в представление (через установщик, разумеется, после построения представления).
При первом подходе как передать идентификатор докладчику, если докладчик создается в представлении?Если бы вы сделали view.getPresenter().setId(42);
, а затем докладчик пошел бы на сервер, чтобы получить некоторую информацию и попросить представление отобразить ее ... плохо пахнет.
При втором подходе можно получить не- интуитивно понятный объектный граф, в котором не ясно, кто является потребителем, а кто - производителем.Кроме того, в ситуациях, когда представление требует информации от докладчика (это требуется почти во всех сценариях использования), что можно сделать:
//some code would create the presenter pass it the id and then call view.setPresenter
class MyView {
void setPresenter(MyPresenter p) {
this.presenter = p;
//OK now that i have my presenter how do I ask it to fetch data from the server.
//do i turn around and do: presenter.setView(this); and then the presenter takes
//over and uses the view to display the data?
}
}
Это одинаково вонючее ... Извините за длинный пост, и спасибозаранее ...