Głównym powodem tych granic jest rozdzielenie obaw . Kod, który uzyskuje dostęp do magazynu danych, powinien tylko martwić się o dostęp do magazynu danych. Nie powinien ponosić odpowiedzialności za egzekwowanie zasad dotyczących danych. Ponadto interfejs powinien być odpowiedzialny za aktualizowanie kontrolek w interfejsie, uzyskiwanie wartości z danych wejściowych użytkownika i tłumaczenie ich na coś, z czego warstwa domeny może korzystać, i nic więcej. Powinien wywoływać operacje zapewniane przez warstwę domeny, aby wykonywać wszelkie niezbędne działania (np. Zapisać ten plik). Wywoływana usługa internetowa powinna być odpowiedzialna za konwersję z medium transmisyjnego na coś, z czego może korzystać warstwa domeny, a następnie wywołać warstwę domeny (większość narzędzi wykonuje za Ciebie wiele pracy).
Ta separacja, jeśli zostanie poprawnie zaimplementowana, może pozwolić ci na zmianę części twojego kodu bez wpływu na inne. Na przykład być może kolejność sortowania zwróconej kolekcji obiektów wymaga zmiany. Ponieważ wiesz, że warstwa odpowiedzialna za manipulowanie danymi (zwykle warstwa logiki biznesowej) obsługuje te rzeczy, możesz łatwo określić, gdzie należy zmienić kod. Oprócz tego, że nie muszę modyfikować sposobu, w jaki jest pobierany ze magazynu danych lub dowolnej aplikacji korzystającej z domeny (interfejs użytkownika i usługa internetowa z mojego przykładu powyżej).
Ostatecznym celem jest uczynienie twojego kodu tak łatwym w utrzymaniu, jak to możliwe.
Na marginesie, niektóre rzeczy nie mogą być zaszufladkowane w określonej warstwie domeny (np. Rejestrowanie, sprawdzanie poprawności i autoryzacja). Te elementy są powszechnie nazywane problemami przekrojowymi, aw niektórych przypadkach można je traktować jako warstwę, która sama w sobie jest widoczna i może być używana przez wszystkie pozostałe warstwy.
Osobiście uważam, że podejście warstwowe jest przestarzałe, a podejście serwisowe jest lepsze. Nadal masz wyraźną linię narysowaną na piasku, kto co robi, ale to nie zmusza cię do bycia tak hierarchicznym. Na przykład usługa zamówienia zakupu, usługa fakturowania i usługa wysyłki, z perspektywy aplikacji wszystkie te usługi reprezentują Twoją domenę, a odroczenie odpowiedzialności, którą opisałem powyżej, jest nadal aktualne w tym kontekście, właśnie zostało zmienione takie że Twoja domena istnieje w wielu miejscach, dodatkowo wykorzystując koncepcję separacji problemów.