5

Wenn ich eine neue mvvm-wpf-Anwendung starte, füge ich normalerweise mvvm-light gleich zu Beginn hinzu. Das funktioniert gut, bis meine Anwendung wächst.Ist der Standard ViewModelLocator von MvvmLight ein AntiPattern? Und wie kann man das mildern?

Irgendwo entlang der Linie der ViewModelLocator wird riesig (viele ViewModels für alle Arten von ChildViewodels). Und noch weiter unten am Kaninchenloch brauche ich mehrere verschiedene Instanzen desselben Ansichtsmodells. (zB für eine Liste von Gegenständen, mit denen man auf dem gleichen Bildschirm interagieren möchte). Dies ist, wo der Kampf beginnt, wie man mit dem nett umgehen, konsequent den Code testbar halten?

Also, wenn ich den ViewModelLocator loswerden will (ist es ein antipattern? Fühlt sich an wie ein ServiceLocator) sollte ich zu ViewModel-zuerst bewegen und (viele) abstrakte Fabriken für alle ViewModels erstellen?

Antwort

0

Der ViewModelLocator ist ein fantastischer Name für einen Navigationsbus, der für Inversion of Control (IoC) verwendet wird. Obwohl dies eine neuere Technologie zu sein scheint, verwendet ein Navigationsbus tatsächlich einen Service Bus auf andere Weise. Es ist kein Anti-Pattern, wenn Sie einen statischen (in VB geteilten) Container haben. Das Anti-Pattern wird angezeigt, wenn Sie den Container in Ihren ViewModels passieren.

In MVVM ist zu beachten, dass es sich um ein vielseitiges Designmuster handelt und Sie es auf viele Arten erweitern können. Die beste Lösung für große Projekte ist das Komponentendesign (ein Design, bei dem sich jedes Feature Ihrer Anwendung in einem eigenen Namespace oder Projekt befindet).

Ein Design Diagramm wie so aussehen:

  • Kunden
    • Modelle
    • Viewmodels
    • Dienstleistungen
  • Orders
    • Modelle
    • Viewmodels
    • Dienstleistungen

etc ... Es kommt auf den Geschmack des Entwicklers wirklich. Solange Ihr Design konsistent ist.

Weiterführende Literatur: besser Um die ViewModelLocator Suche nach dem Navigation Bus zu verstehen. Um den EventAggregator besser zu verstehen, suchen Sie nach Nachrichtenbus

Verwandte Themen