szukam bardziej elastycznego modelu domeny, gdzie jest rozdzielenie danych i zachowanie, ale nie wierzę Layer Service jest odpowiednia warstwa za zachowanie . Zamiast tego, być może, można zastosować prostą metodę Business Logic Layer, w której obiekty obiektu biznesowego eksponują tylko dane, a obiekty procesów biznesowych ujawniają tylko zachowanie, a wśród tych zachowań są metody sprawdzania poprawności.
Jedną z korzyści, w zależności od luźnego powiązania procesów biznesowych, można zastosować walidację w szerszym zakresie kowariantnych, a nawet niezmiennych typów.Zastanów się przez chwilę nad weryfikacją pól "FirstName" i "LastName", a następnie rozważ, czy te pola mogą w dowolnym dużym systemie istnieć w kilku lub kilku różnych jednostkach. Oddzielenie procesu od danych umożliwiłoby jednorazowe wdrożenie procesów sprawdzania poprawności i zastosowanie ich do wielu obiektów, które zapewniają te same dane.
Zauważyłem, że ideał, że Model Domen "powinien" składać się z Obiektów Domeny będących połączeniem Danych i Zachowania to koncepcja Fowlera/Evansa, około 2000-2002 (krótko po szybkiej migracji w kierunku rozproszonych systemów informacyjnych zamiast aplikacji dwuwarstwowych.)
Myśli?
Dodam też, że niektóre obiekty biznesowe mogą również służyć do koordynacji. Na przykład nie napiszesz zachowań potrzebnych do przekształcenia zamówienia na fakturę, będziesz mieć OrderConverter, który sprawdzi zamówienie i jeśli Valide go skonwertuje. To, co zazwyczaj postrzegam jako obiekty "usług", to po prostu zwałowisko metod mało powiązanych. Wszystkie robią coś w sklepie, ale poza tym nie są powiązane. W języku Csla metody te byłyby zazwyczaj umieszczane w oddzielnych klasach, które mają pełną wiedzę o tym, jak używać caselthat, on wie wszystko o tym, jak złożyć zamówienie na fakturę – Andy