Odpowiedz

18

Warunki są nieco nieprecyzyjne Zgadzam się. Chciałbym użyć domeny domain, aby odnieść się do obszaru biznesowego, z którym masz do czynienia. Jak bankowość lub ubezpieczenie, czy jak nie. Następnie masz modele domen. To są sprawy, którymi zajmujesz się w tej domenie biznesowej, jak na przykład domena bankowości masz rachunki, klientów, przelewy itp. Chciałbym użyć terminu podmiot dla odniesienia klasy/POJO lub utrwalonej/konkretnej wersji modelu .

Co prawdopodobnie myli cię tutaj jest to, że w perspektywie MVC The modelu jest konkretna rzecz, ale odwołuje się do modelu danych używany do reprezentowania jakąś prezentację w GUI internetowej, więc nie rozumiem, że w mieszanych z powyższym wyjaśnieniem.

28

Warunki, o których nie masz pewności, to: "domain objects", "encje domeny" i "obiekty modelu". Chociaż zwykle używane zamiennie, obiekty domeny i obiekt modelu mogą być także instancjami wzorca (w zasadzie: obiekty domenowe z dodaną logiką pamięci masowej).

W zwykłym obiekcie domeny nie ma logiki pamięci masowej. Zajmuje się nim data mappers.

Termin "obiekty modelu" pochodzi z książek Fowlera (czytaj: PoEAA, aby uzyskać więcej szczegółów), a IMHO jest częścią mylącego MVC, ponieważ cały model jest warstwą aplikacji (składa się z niej MVC i warstwa prezentacji) , która zawiera te "obiekty modelu", którymi zwykle zajmuje się services (w tym obrazie warstwa modelu to wszystkie trzy współśrodkowe okręgi).

Zdecydowanie wolę używać terminu "obiekt domeny".

Termin "encja domeny" (lub "obiekt obiektu") jest zwykle używany, gdy autor sugeruje, że obiekt jest bezpośrednim reprezentacją struktury pamięci (częściej - tabela bazy danych). Są to również prawie zawsze implementacje aktywnego rekordu.

P.S .: w niektórych artykułach będzie można również zobaczyć termin "model" (liczba mnoga). Zwykle nie jest to bezpośrednio związane ze wzorcem projektowym MVC, ponieważ mówi o architekturze Railsowej, gdzie "modele" są tylko aktywnymi zapisami, które są bezpośrednio udostępniane/tworzone przez kontroler.

.. nie wiem, czy to mylić większą

3

Dla przypomnienia. W praktyce, domena i model są takie same, podczas gdy jednostka jest także domeną/obiektem, który byłby używany do przechowywania w bazie danych.

Niektórzy ludzie próbują ponownie wyjaśnić takie tematy, ale żaden z nich nie jest kanonem.

Różnica polega na tym, że w świecie Java domena jest częściej używana, podczas gdy w świecie C# używany jest model (a MS zachęca do jego używania), ale jest to tylko konwencja i można używać obu.

W tej samej koncepcji, obiekt wartości (VO) jest używany przez ludzi Java, a DTO dla ludzi z C#, nawet jeśli oba są praktycznie takie same. Również POJO (Java) vs POCO (C#), Pakiety (Java) vs NameSpace (C#), Setter i Getter (Java) kontra Encapsulation (C#)

1

Obie domeny i modele są klasami. Sposób użycia klasy rozróżnia, czy powinien być sklasyfikowany i umieszczony w folderze domeny lub modelu. Jeśli klasa będzie używana TYLKO w widoku, umieść ją w folderze modelu. Jeśli klasa jest odwzorowana na obiekt bazy danych, umieść go w folderze domeny.

0

Można powiedzieć, że domena to klasy dla tabel bazy danych, zewnętrznych obiektów usługowych itd. Jeśli więc tworzysz projekt i tworzysz domenę katalogu, umieszczasz w nim obiekty bazy danych. Klasa podobna to Entity i może być klasą Customer ze swoimi właściwościami. Dlaczego to jest Entity, a nie POCO? To z powodu jego użycia. Treść Jednostki można odczytać/zapisać do bazy danych. Z powodu myślenia o nim jako o istnieniu, wiesz, gdzie możesz go użyć. Wiedząc, że jesteście Podmiotem, nie umieszczacie go w jego imieniu. Teraz model. Jeśli korzystasz z tego klienta, możesz mieć właściwości, których nie chcesz używać. Klient może być naprawdę prostą Jednostką. Ale powiedzmy, że masz złożoną. Ten, który czytasz z usługi internetowej o tak wielu właściwościach, których nie będziesz używał. Następnie możesz odczytać tę encję (= można perfekcyjnie zrobić z serializacją) i użyć tej encji, aby utworzyć jej model. Jeśli ta Jednostka jest używana do kopiowania danych do Modelu, wówczas mówimy również o DTO (Data Transformation Object), czasami piszemy to jako CustomerDTO. Do kopiowania danych z Entity do Modelu możesz użyć narzędzi mapowania. Nazwa Entity zmienia się następnie na CustomerModel. Następnie użyjesz modelu rozszerzenia, ponieważ inaczej nie będziesz wiedział co to jest. W tym CustomerModelu może istnieć wiele innych właściwości. Niektóre z tych właściwości mogą być właściwościami procesu (nie muszą pochodzić z jednostki Customer). Treść tych właściwości pochodzi z innych usług. Prostą, którą można utworzyć z klienta, jest nazwa, składająca się z kilku właściwości klienta. Zatem wypełnianie CustomerModel może być skomplikowane. Możemy umieścić kod do wypełnienia CustomerModel w tak zwanej Fabryce i zadzwonić do tego CustomerFactory.

Powiązane problemy