Przeczytałem kilka artykułów/postów dotyczących korzystania z Getters i Setters, i jak pomagają one pokonać cel enkapsulacji w obiektach modelu domeny. Rozumiem logikę kryjącą się za używaniem ustawiaczy - pozwalasz kodowi klienta manipulować atrybutami tego obiektu, poza kontekstem reguł biznesowych i niezmienników obiektu.DDD i korzystanie z Getters and Setters
Teraz ten dyrektor nadal mnie myli. Na przykład, co się stanie, jeśli będę musiał zmienić wartość zmiennej składowej obiektu? Na przykład, jeśli nazwisko osoby zmienia się, w jaki sposób mogę to odzwierciedlić w modelu? Na początku pomyślałem, dlaczego nie mam funkcji o nazwie "ChangeName", która pozwala mi podać nową nazwę, a to z kolei może zmienić wewnętrzną zmienną "name". Cóż ... to tylko seter, prawda!
Co muszę wyjaśnić - jeśli miałbym całkowicie wyeliminować seterów, to czy w sytuacjach takich jak powyższy mam polegać wyłącznie na parametrach konstruktora? Czy powinienem przekazać nową wartość atrybutu w miejsce starej wartości atrybutu za pomocą konstruktora, po czym mogę kontynuować zmiany, przekazując obiekt do jakiejkolwiek infrastruktury trwałości, którą posiadam?
Te dwa artykuły są użyteczne w tej dyskusji: