这是一个非常简单的问题,我仍然很不安:
为什么现在广泛接受一个类通过访问器方法返回对其私有成员的引用?这不是完全破坏了封装原则吗?如果可以,那为什么不把会员公开!?
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 的上下文中,如果对象是聚合根,这是不行的。我引用
只允许外部对象保存对根的引用。对内部成员的瞬态引用只能在单个操作中使用。因为根控制着访问,所以它不会被内部结构的改变弄得措手不及。
[领域驱动设计,埃里克·埃文斯]
... 二传手 schmetters ...