Czytam o projektowaniu opartym na domenach od prawie dwóch lat i ostrożnie wprowadzam pewne koncepcje do mojej codziennej pracy lub przynajmniej planuję, jak rzeczy, które robię regularnie, mogą być wykonane w ramach projektu opartego na domenach.
Jeden wniosek, do którego zacząłem dochodzić, szczególnie w odpowiedzi na więcej informacji o pozyskiwaniu zdarzeń i segregacji odpowiedzialności za zapytania (CQRS), że być może obiekty domeny są przeznaczone wyłącznie do zapisu. Mówiąc dokładniej, wydaje się, że to, co ludzie subtelnie sugerują w dużej części dokumentacji, przeczytałem, że obiekty domeny są odpowiedzialne za wykonywanie operacji / obliczeń ukierunkowanych na domenę, sprawdzanie poprawności, a następnie są tam głównie po to, aby zapewnić drogę do trwałości poprzez infrastruktura zapewniona w ramach implementacji repozytorium. Chociaż podoba mi się fakt, że może to znacznie uprościć model domeny, ponieważ eliminuje odpowiedzialność za ujawnianie stanu.
Jeśli rzeczywiście jest prawdą, że obiekty domeny mają być głównie używane jako obiekty tylko do zapisu, to rodzi się dla mnie kilka pytań, na które mam nadzieję, że ktoś mógłby odpowiedzieć.
- W jaki sposób wykonuje się testy jednostkowe na obiekcie, który ma obiekty ustawiające lub metody, które modyfikują stan obiektu, ale nie zapewniają zewnętrznego publicznego interfejsu do odczytu stanu z takich obiektów, jak obiekty pobierające właściwości w języku C #? Czy można udostępniać stan wyłącznie w celu umożliwienia testowania tego obiektu?
- W jaki sposób pokazuje się użytkownikowi wyniki obliczeń lub operacji wykonanych w domenie bez konieczności ich utrwalania, a następnie wyciąga wyniki ze sklepu trwałego poza kontekstem domeny? Czy można wystawiać stan wyłącznie w celu pokazania wyników?
Czy jest ogólna zasada, że jedynymi obiektami pobierającymi właściwości (uzyskującymi akcesoria) powinny być takie, które można również zapisywać w domenie? Lub inaczej mówiąc, czy własności tylko do odczytu powinny być jedyną rzeczą, której należy unikać, ponieważ są one tylko do celów odczytu, a zatem nie odgrywają niezbędnej roli w rzeczywistym modelu domeny?
Powiązany materiał: