Причина, по которой фраза «использование геттеров/сеттеров в ваших классах зла» в отношении DDD заключается в том, что геттеры и сеттеры обычно не представляют ваш UL (вездесущий язык) и приводят к анемичным сущностям. Но если в вашем UL есть что-то вроде «Мне нужно количество этой строки», тогда вы можете создать геттер, но назовите его в соответствии с UL, например: invoice.lineAmount(lineId)
.
Внутри метода вы можете просто получить доступ к собственности, поскольку CharlesNRice уже ответил. Если вы чувствуете, что вам понадобится специальное лечение для линий чтения/настройки, вы можете создать частный геттер, чтобы использовать его внутри методов логики домена.
UPDATE:
геттеры и сеттеры были необходимы в первую очередь потому, что позже в этом проекте вы могли бы хотеть, чтобы добавить некоторые дополнительные проверки/преобразования перед установкой/получение имущества, без него вы бы чтобы найти каждый кусок кода, который приобретает свойство и изменить его. С getter/setter вы получаете доступ к собственности в одном месте, поэтому вы меняете код в одном месте - гораздо проще в обслуживании. Но поскольку в DDD вы должны использовать только логические методы домена, тогда вы не получаете доступ к своим свойствам прямо где-либо за пределами данного объекта, поэтому вам также не нужно использовать геттеры и сеттеры. Ваши методы домена, такие как invoice.lineAmount(lineId)
, фактически работают так же, как и геттеры, но идут вместе с UL, поэтому они в порядке. Вы бы подумали о создании реальных геттеров/сеттеров для внутреннего использования, если увидите, что вы используете свойство в нескольких местах вашего класса сущности.
И нижний предел для? – Apocatastasis
просто прочитал ваш вопрос, посмотрели ли вы на это руководство MSDN по коллекциям http://msdn.microsoft.com/en-us/library/dn169389(v=vs.110).aspx – MethodMan
Хорошо, я просто прочитал его. Я не подвергаю свою коллекцию внешнему миру, поэтому я не понимаю вашу точку зрения, за исключением соглашений об именах. – Apocatastasis