5
votes

I have a MVP (passive view) setup, and it is going quite well. I recently read Martin Fowlers description of this (http://martinfowler.com/eaaDev/PassiveScreen.html) and he writes "Another advantage that Passive View is a very explicit mechanism. There's very little reliance on Observer mechanisms or declarative mappings."

In my MVP I have my model completely oblivious of a presenter, and communication from the model to the presenter is handled by events. I initialize my MVP in the view by calling the presenter ctor e.g. new Presenter(this, new Model()) (where this refers to the view).

My question is, should I make the model aware of a presenter such that it can invoke presenter logic directly instead of using events?

1

1 Answers

7
votes

No, you shouldn't. If you did, your model would be tightly coupled with your presentation layer, making it useless outside of that context. Moreover, testing, debugging and maintaining your model layer would become more problematic.