Wir versuchen, das Model-View-Presenter-Muster auf (fast) allen neuen Entwicklungsarbeiten zu verwenden, die wir durchführen.MVP-Muster, wie viele Ansichten zu einem Moderator?
Ich bin fest davon überzeugt, ein Framework zu haben, um Menschen zu helfen, eine Design-Anforderung zu erfüllen, wir haben ein paar interne Frameworks für verschiedene Komponenten (Protokollierung, E-Mail-Versand, etc.), also versuche ich zu bekommen eine Art von MVP-Framework entwickelt.
Ich habe es geschafft, etwas zusammenzubringen, das einfach zu verwenden ist für Leute, die nicht vertraut sind mit MVP und das ist nicht zu weit entfernt von wie wir derzeit arbeiten. Das Problem ist, dass es eine Beziehung von 1 Sicht zu 1 Moderator macht.
Hier ist eine grobe Skizze des Rahmens:
public abstract class Presenter<TView> where TView : IView {
public virtual T View { get; set; }
public virtual void Setup(TView view) {
this.View = view;
}
}
public interface IView { }
Die grundlegende Art und Weise, dass es funktioniert, ist, dass all Ansicht erstellt erbt von der IView
Schnittstelle und Presenter Klasse zu einem übergeben, die von der erbt Presenter
abstrakte Klasse.
Wie Sie sehen können, verwende ich. NET-Generics, so dass der Entwickler eine starke Typisierung der Ansicht haben wird, wenn sie am Präsentator arbeiten (und schließlich eine Klasse vom Presenter erbt).
So kann ich eine grundlegende Login-Komponente wie folgt aufgebaut:
public class Login : Presenter<ILogin> {
public override Setup(ILogin view){
base.Setup(view);
this.View.Login += new EventHandler(login);
}
void login(object sender, EventArgs e) { ... }
}
public interface ILogin : IView {
string Username { get; set; }
string Password { get; set; }
event EventHandler Login;
}
Also wie gesagt ich ganz davon, gibt es Compiler erzwungen Typisierung, stark typisierte Ansichten und ein MVP- wie Muster.
Einige Leute sind jedoch nicht ganz so glücklich mit der Implementierung, weil es eine 1 zu 1 Beziehung zwischen Moderatoren und Ansichten hat, und streng genommen ist das nicht, wie MVP gemeint ist.
Ich frage, wie gültig dieses Argument wirklich ist, auf den verschiedenen Projekten, die ich dieses Framework mit (von mittleren bis zu großen Projekten) verfolgt habe, habe ich kein gutes Beispiel gefunden, wo ich dachte "Ich brauche mehrere Ansichten für diesen Moderator ". Wenn ich Funktionen sehe, die über mehrere Ansichten hinweg geteilt werden können, frage ich mich, ob sie sogar an einen bestimmten Moderator gebunden sein sollten oder ob sie in einer neutraleren Klasse sein sollten.
Ist das Framework, das ich versuche zu weit von MVP zu erreichen MVP genannt werden? Ist das primäre Ziel von MVP die Notwendigkeit, mehrere Ansichten zu einem Moderator zu haben? Ist es überhaupt möglich, ein echtes .NET MVP-Framework mit n-view-Unterstützung zu haben?
Umsetzung kann ich Verdienste sehen die Ansicht als Ctor param nebenbei aber die meisten Anwendungen sind auf Web-Anwendungen, und ich habe eine andere Klasse bekommen, die UserControl mit dem Moderator umhüllt (so dass Sie auf der Ebene der Benutzeroberfläche erben können) –
Könnten Sie bitte http://StackOverflow.com/questions/8851933/event-bubbling-and-mvp-asp-net beantworten? – Lijo