Вот очень простой вопрос, о котором я все еще очень беспокоюсь:
Почему теперь общепринятым считается, что класс возвращает ссылку на свой частный член через метод доступа? Разве это не полностью нарушает принцип инкапсуляции? Если все в порядке, то почему бы просто не сделать его общедоступным??
public class EncapsulationViolator
{
private object abuseMe;
public object AbuseMe
{
get { return abuseMe; }
}
}
Изменить Случай, который я рассматривал, - это
EncapsulationViolator ev = new EncapsulationViolator();
object o = ev.AbuseMe;
o.SetValue(newValue);
Теперь состояние ev имеет изменение через транзитивность, потому что состояние его члена abuseMe изменилось.
В контексте DDD это не нормально, если объект является агрегированным корнем. Я цитирую
Разрешить внешним объектам удерживать ссылки только на корень. преходящий ссылки на внутренних членов могут быть переданы для использования в рамках одиночный функционирование только. Поскольку root контролирует доступ, он не может быть ослепленные изменениями внутренних органов.
[Проект, управляемый доменами, Эрик Эванс]
... сеттеры schmetters...