Czym różni się Model od ViewModelu?

0

Witam,
Czy mógłby mi ktoś wytłumaczy w łopatologiczny sposób czym różni się Model od ViewModelu? Jak i kiedy stosuje się ViewModel a kiedy Model. Czy Model ma swoje zastosowanie tylko i wyłącznie w odzwierciedleniu tabeli bazy danych?? Natomiast ViewModel służy do przechowywania różnych pól, różnych Modeli?? Prosiłbym o rozwianie moich wątpliwości. Dzięki!

7

Model to rdzeń aplikacji. Modelem w aplikacji symulującej rakietę kosmiczną, będą wszelkie klasy i funkcje służące do opisania rakiety, grawitacji, ruchu, innych zjawisk fizycznych. Modelem w aplikacji dla księgowych będą faktury, pozycje faktur, produkty, klienci, itd. Modelem w aplikacji magazynowej będą towary, magazyny, dostawy, samochody, itd. Modelem w grze w szachy są: plansza, bierki, historia gry, zasady gry.

Wbrew częstemu mniemaniu, kod odpowiedzialny za kontakt aplikacji z bazą danych, to nie jest część modelu. To jest inna warstwa, nazywana warstwą dostępu do danych, składowania, perzystencji (po angielsku to słowo brzmi lepiej - persistence). Przechowywanie danych to nie jest część modelu

Część modelu zapisywana do bazy danych to encje. Encje są mapowane w jakiś sposób za pomocą jakiegoś mechanizmu najczęściej na tabele bazy danych. Takie encje często zawierają dane, których nie chcemy pokazywać użytkownikowi (np. data utworzenia, data ostatniej edycji, nic niemówiące id). Z drugiej strony, czasem potrzeba wyświetlić użytkownikowi dane pochodzące z kilku encji. Tu z pomocą przychodzą ViewModele. To są po prostu klasy służące do pokazywania danych użytkownikowi.

0

ViewModel to inaczej Prezenter lub Dekorator (zaraz zlecą się gromy, że plotę bzdury, ale faktyczne użycie i wykonanie nie wiele się różni).

0
winerfresh napisał(a):

ViewModel to inaczej Prezenter lub Dekorator (zaraz zlecą się gromy, że plotę bzdury, ale faktyczne użycie i wykonanie nie wiele się różni).

No, ViewModel z MVVM można w jakiś sposób do Prezentera z MVP porównać, bo oba odpowiadają za łączenie Modelu z Widokiem. Ale już ViewModel używany w MVC, raczej nie, bo to tylko głupie DTO.
A z Dekoratorem związku nie widzę, mógłbyś @winerfresh, rozwinąć swoją myśl?

0

W MVC dekorator i prezenter to pojęcie często używane zamiennie. Patrząc nie patrząc to prezenter jest specjalną formą dekoratora i wszystko ma proste zadanie - odchudzić modele i wywalić z niego elementy prezencji.

1 użytkowników online, w tym zalogowanych: 0, gości: 1