Anemiczne modelu domeny jest opisany jako anty-wzorzec w domenie napędzane projektu Martin Fowler. Aby mieć logikę biznesową w modelach domen, często używa się usług domenowych. Ale wprowadzanie usług domenowych do modeli domen jest uważane za szkodliwe przez Vaughna Vernona (patrz „Wdrażanie projektowania opartego na domenie, Strona 387).
Moim zdaniem opinie te są sprzeczne, czy to prawda? Jak można rozważyć oba punkty?
Czy to naprawdę bogaty model domeny z wprowadzonymi usługami domenowymi w porównaniu z anemicznym modelem domeny i zwykłymi usługami domenowymi ?
domain-driven-design
dependency-injection
services
Sjoerd222888
źródło
źródło
Odpowiedzi:
Anemiczny model to po prostu kontener danych. Nie zawiera zachowania. (Można to właściwie uznać za dobrą rzecz w paradygmacie funkcjonalnym.) Przeciwieństwem modelu anemicznego nie jest model pełen usług domenowych. Opisujesz dwie skrajności - obie są złe.
Jeśli masz model anemiczny, nie w pełni akceptujesz to, co oferuje OOP. Jeśli zaczniesz wprowadzać usługi do tych modeli, prawdopodobnie wprowadzasz obawy, które tam nie należą. Albo to, albo twój model jest bardziej anemiczny niż myślisz. Dlaczego miałbyś potrzebować usługi innej niż ta, która zapewnia coś, co jest wymagane, ale brakuje? (Brak może oznaczać anemię).
Unikanie obu „mówi” prowadzi do mocniejszego projektu. Czy masz w usłudze coś, czego potrzebuje model? Może powinien zostać przeniesiony do modelu. Jeśli nie, być może powinieneś ponownie rozważyć swoje obawy. Zachowanie modelu powinno działać wewnątrz modelu. Powinien głównie (jeśli nie tylko) dotyczyć członków. Pamiętaj jednak, że nadal będą rzeczy, które będą działać na lub z modelem. Na przykład modele nie powinny otwierać połączeń TCP ani nasłuchiwać zdarzeń interfejsu użytkownika, nawet jeśli są w jakiś sposób zaangażowane. To czyjeś odpowiedzialność i że ktoś nigdy nie należy wewnątrz modelu.
źródło
To nie jest sprzeczne. Obaj zwolennicy chcieliby, abyś umieścił swój rzeczywisty kod w samym obiekcie domeny.
to znaczy.
vs ADM
vs usługi wstrzyknięte
Szczerze mówiąc, każde podejście ma plusy i minusy. Ten, który wybierzesz, jest w dużej mierze kwestią osobistych preferencji
źródło