On Wednesday, May 14, 2014 11:57:34 AM UTC+2, wahaha wrote:
>
> should the View object keep a reference to the corresponding Activity 
> object(which act as a presenter)?
> in the demo called "helloMVP" provided by the gwt official site,it does.
> but in my humble opinion,Presenter is the layer on top of View.and the 
> upper layer may invocate the lower layer,but the lower layer shoudn't 
> invocate the upper layer.
> so,i think the view object shoundn't keep a reference to the activity 
> object.
>

It depends how you implement MVP wrt listening to events: is the presenter 
pulling widgets from the view to attache event handlers to them (or 
possibly attach them through specialized methods on the view, e.g. 
addSubmitButtonClickHandler vs. getSubmitButton().addClickHandler) or is it 
implementing a "callback" interface that is passed to the view (so the 
addClickHandler is done in the view, possibly through UiBinder, and simply 
delegates to the appropriate method of the presenter interface, e.g. 
presenter.onSubmitButtonClicked()).
But in any case, the view keeps one (or several) reference(s) to the 
presenter, either directly or indirectly through event handlers.

You might argue that the presenter might not directly implement the 
callback interface, but it's exactly the same, just with an additional 
level of indirection: the view (or its widgets) has to call back to the 
presenter when the user interacts with it, so it must keep a reference to 
it.
You could use an event bus to decouple things, but that's using a 
sledgehammer to crack a nut; you'll pay it in performance and 
maintainability: it's not because you split the view and the presenter that 
they're decoupled. The main reason for using MVP is to be able to mock the 
view and avoid using a GWTTestCase to test the presenter (and you can test 
it at a slightly higher level, e.g. "show error on field" rather than "put 
error message in panel, show panel and add error style to field").

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-web-toolkit+unsubscr...@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at http://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

Reply via email to