Ein Kollege von mir schlug vor, eine Factory-Klasse zum Erstellen von Ansichtsmodellobjekten in unseren ASP.NET MVC-Lösungen zu verwenden. Die Idee ist, dass es beim Design und der Wartbarkeit der Art und Weise helfen kann, wie Ansichtsmodelle in unseren Apps erstellt werden.
Ich wollte herausfinden, ob jemand Erfahrung damit hat. Ich habe einige Nachforschungen angestellt und sehr wenig über diese Praxis herausgefunden.
Derzeit erstellen wir Viewmodel-Objekte auf Controller-Ebene, z
public ActionResult Index()
{
return this.View(this.BuildIndexViewModel());
}
Also ist this.BuildIndexViewModel () dafür verantwortlich, die viewmodel-Klasse zu erstellen (offensichtlich :). Aber wir untersuchen die Möglichkeiten von:
public ActionResult Index()
{
return this.View(ViewModelFactory.CreateIndexViewModel());
}
Das ist eine interessante Idee, aber ich bin nicht zu 100% überzeugt. Ich war an den Meinungen anderer Leute interessiert.
quelle
Antworten:
In diesem Fall würde ich sagen, dass die besten Leitlinien die GRASP- Prinzipien sind. Sehen Sie sich insbesondere die vier Kriterien für die Zuweisung der Objekterstellung an:
Im Allgemeinen sollte eine Klasse B für die Erstellung von Instanzen der Klasse A verantwortlich sein, wenn eine oder vorzugsweise mehrere der folgenden Bedingungen zutreffen
Ihre Controller-Klasse (B) entspricht den Elementen Nr. 3 und Nr. 4 dieser Liste (und Nr. 2, wenn das Ansichtsmodell zurückgeschickt wurde), sodass das Konstruktionsverhalten von Ansichtsmodell (A) bereits an einem sehr vernünftigen Ort zu leben hat. Aus meiner Sicht würde es nur zwei Gründe geben, die mich dazu zwingen würden, dieses Konstruktionsverhalten in eine Fachklasse zu überführen.
Wenn ich auf diese 4 Kriterien zur Objekterstellung in GRASP zurückblicke, würde ich das Verhalten nur in eine separate Factory extrahieren, wenn es mir einen zusätzlichen Haken in dieser Liste einbringt. Andernfalls hätte dies keinen Wert.
Ich hoffe, das hilft!
quelle