2010-09-16 14 views
9

Nie chcę przechowywać moich klas modelu domeny w tym samym zestawie, co moja platforma internetowa. Folder Models w strukturze projektu jest dla mnie bezużyteczny. Właśnie skończyłem tutorial Music Store i zauważyłem, jak tworzą folder "ViewModels", który ma dla mnie sens.Od MVC do MVVM

Czy ma sens traktowanie folderu Modeli jako folderu ViewModels? Czy wielu ludzi to robi? Czy istnieje taki wzór jak MVVM?

Odpowiedz

15

Model widokowy to coś, co dodaje kolejny poziom abstrakcji, na wypadek, gdyby nie całkowicie ufałeś swojemu kodowi prezentacji (lub po prostu znajdziesz bardziej elegancki sposób tego enkapsulacji).

Oznacza to, że jeśli klasa Person ma metodę Delete lub właściwość SSNumber, ty chcieć nie zdać ten przedmiot do widzenia, jak ten, koncepcyjnie, umożliwia to nazwać Usuń lub wyświetlić SSN, które muszą nie być zdolnym do.
Aby uniknąć tej sytuacji, należy utworzyć inną klasę, PersonViewModel, która zawiera tylko informacje/metody, które można bezpiecznie wywołać z widoku.

Ma to niewiele wspólnego z logiką modelu z aplikacji MVC. Możesz utworzyć oddzielny projekt dla swojego modelu i odnieść go do swojej aplikacji internetowej, niezależnie od tego, czy używasz enkapsulacji ViewModel. Zachęcają do tego książki, które czytałem do tej pory.

4

Model domeny jest zaprojektowany pod kątem logiki biznesowej i abstrakcji biznesowej, jest przeznaczony do rozwiązania problemu biznesowego, może przy użyciu technik obiektowych, wynikiem jest model domeny z obiektami i obiektami wartościowymi, które odwołują się do siebie nawzajem i wchodzą w interakcje z innymi osiągnąć cele logiki biznesowej.

Prezentacja z drugiej strony jest inną perspektywą, musisz głównie spłaszczyć obiekty domeny, aby ułatwić wiązanie, możesz także nie być zainteresowana niektórymi atrybutami i właściwościami jednostek modelu domeny w warstwie prezentacji, w związku z tym model prezentacji (View Model) jest bardziej dostosowanym modelem do celów wyświetlania, struktura może być inna, możesz usunąć niektóre pola, które nie są potrzebne do prezentacji, a także dodać niektóre pola tylko do celów prezentacji (np. "IsIdEnabled" lub SliderWidth, ...)

0

Jak Dx_ stwierdził powyżej, nie ma czegoś takiego jak MVVC.

Ale ta dobra rozmowa bardzo dobrze opisuje MVVM: Deep Dive MVVM