DDD и использование геттеров и сеттеров

Я прочитал несколько статей / сообщений об использовании геттеров и сеттеров и о том, как они помогают преодолеть цель инкапсуляции в объектах модели предметной области. Я понимаю логику отказа от использования сеттеров - вы позволяете клиентскому коду манипулировать атрибутами этого объекта вне контекста бизнес-правил и инвариантов объекта.

Но этот принцип меня все еще смущает. Например, что произойдет, если мне нужно изменить значение переменной-члена объекта? Например, если имя человека меняется, как я могу отразить это в модели? Сначала я подумал, а почему бы не иметь функцию с именем «ChangeName», которая позволяет мне передать новое имя, а она, в свою очередь, может изменить внутреннюю переменную «name». Ну .... это же сеттер, не так ли!

Что мне нужно прояснить - если бы я полностью исключил сеттеры, то в подобных ситуациях я должен был бы полагаться исключительно на параметры конструктора? Должен ли я передавать новое значение атрибута вместо старого значения атрибута через конструктор, после чего я могу сохранить изменения, передав объект в любую имеющуюся у меня инфраструктуру сохранения?

Эти две статьи полезны в этом обсуждении:

  1. http://kellabyte.com/tag/ddd/
  2. http: // типичный программист.com /? p = 23

10
задан Rudy Lattae 31 July 2013 в 19:23
поделиться