To pytanie zadałem jakiś czas temu na temat SO, ale może być lepiej omówione tutaj ...
Gdzie pracuję, posunęliśmy się tam iz powrotem na ten temat wiele razy i szukasz kontrola poprawności. Oto pytanie: Czy Business Objects być kontenery danych (więcej jak DTOs ) lub powinny one również zawierać logikę, które mogą wykonywać pewne funkcje na tym obiekcie.
Przykład - Take obiektu klienta, to prawdopodobnie zawiera pewne wspólne właściwości (nazwa, identyfikator itp), że obiekt powinien obejmować również funkcje klienta (SAVE, calc, etc.)?
Jedna linia rozumowania mówi oddzielić obiekt z funkcjonalności (jeden odpowiedzialność zleceniodawcy) i umieścić funkcjonalność w warstwie logiki biznesowej lub obiektu.
Druga linia rozumowania mówi, nie, jeśli mam obiekt klienta, po prostu chcę zadzwonić Customer.Save i być z nim zrobić. Dlaczego muszę wiedzieć o innej klasy, aby zaoszczędzić klientowi jakbym spożywania obiekt?
Nasze ostatnie dwa projekty miały obiekty oddzielone od funkcji, ale debata została ponownie podniesiona nad nowym projektem.
Co ma sens i dlaczego?