2010-09-28 2 views
5

Ich habe ein MVP (passive View) Setup, und es läuft ganz gut. Ich lese kürzlich Martin Fowlers Beschreibung davon (http://martinfowler.com/eaaDev/PassiveScreen.html) und er schreibt "Ein weiterer Vorteil, dass passive Ansicht ist ein sehr expliziter Mechanismus. Es gibt sehr wenig Vertrauen auf Beobachter Mechanismen oder deklarative Zuordnungen. "Eine allgemeine Frage zu Model-View-Presenter (C#), sollte das Modell den Moderator kennen?

In meinem MVP habe ich mein Modell völlig ohne einen Moderator, und die Kommunikation vom Modell zum Moderator wird durch Ereignisse gehandhabt. Ich initialisiere meinen MVP in der Ansicht, indem ich den Moderator ctor z. new Presenter (this, new Model()) (wo sich dies auf die Ansicht bezieht).

Meine Frage ist, sollte ich das Modell auf einen Moderator aufmerksam machen, so dass es Moderatorlogik direkt aufrufen kann, anstatt Ereignisse zu verwenden?

Antwort

6

Nein, sollten Sie nicht. Wenn Sie dies tun würden, wäre Ihr Modell eng mit Ihrer Präsentationsebene verbunden und wäre außerhalb dieses Kontextes nutzlos. Außerdem würde das Testen, Debuggen und Warten Ihrer Modellschicht problematischer.

+0

Und wie kann Martin Fowler überhaupt sagen, dass die passive Sichtweise sehr wenig auf Beobachtermechanismen angewiesen ist? Vielleicht meint er einen Mechanismus, der die Ansicht direkt mit dem Modell verbindet (z. B. durch Ereignisse)? – lejon

+0

Weil der Moderator der passiven Ansicht diktiert (während eine aktive Ansicht weniger Handhaltung erfordert, wenn Sie möchten). Mit anderen Worten, die passive Ansicht beobachtet den Moderator nicht, aber der Moderator beobachtet das Modell (und diktiert den View entsprechend). –