2011-01-17 10 views
5

Z tego, co przeczytałem, wydaje się być uważana za najlepszą praktykę w MVVM dla każdego widoku, aby mieć swój własny odpowiedni ViewModel, co ma sens, ponieważ ViewModel ma być modelem Widoku. Zasadniczo ponowne korzystanie z ViewModels przez różne widoki wydaje się być odradzane. Czy tak jest zawsze? Jeśli nie, jakie są ogólne wytyczne dla określenia, czy ViewModel powinien być ponownie wykorzystywany w ten sposób?Czy modele ViewModels będą kiedykolwiek ponownie wykorzystywane przez różne widoki? Jeśli tak, to kiedy?

Jedna z sytuacji, w której mogę zadowalać ponowne użycie ViewModelu z innym Viewem, to sytuacja, w której dwa widoki wykorzystują dokładnie te same dane z modelu, a widoki same przedstawiają dane inaczej. Jeśli widoki mogą obsłużyć reprezentowanie tych samych danych na różne sposoby, jeden ViewModel może być w stanie efektywnie obsłużyć każdy widok.

Odpowiedz

8

Powodem, dla którego mamy zasady, jest myślenie przed ich złamaniem.

To znaczy: nie ma nic złego w korzystaniu z tego samego modelu ViewModel dla dwóch podobnych widoków. Musisz być bardzo ostrożny, aby twoje dwa widoki nie rozchodziły się, zostawiając cię z viewmodelem, który próbuje zrobić dwie różne rzeczy.

Dlatego zaleca się posiadanie jednego modelu widoku na widok. Mimo że może to prowadzić do powielania, w dłuższej perspektywie utrzymanie widoczności będzie łatwiejsze.

Jeśli chodzi o powielanie, nie ma nic złego w klasach viewmodel, które mają wspólną klasę podstawową.

+0

Nie można tego było lepiej. Nie widzę niczego złego w rozpoczynaniu z tą samą maszyną wirtualną dla wielu widoków, a następnie dzielenie ich i/lub wyodrębnianie wspólnego przodka w miarę potrzeby (pamiętaj YAGNI). –

+0

Wydaje się to logiczne. Dzięki. – foven

Powiązane problemy