これは非常に単純な質問ですが、私はまだ非常に不安です。
クラスがアクセサメソッドを介してプライベートメンバーへの参照を返すことが現在広く受け入れられているのはなぜですか?これはカプセル化の原則を完全に破っていませんか?これでよければ、メンバーを公開してみませんか!?
public class EncapsulationViolator
{
private object abuseMe;
public object AbuseMe
{
get { return abuseMe; }
}
}
編集私が考えていたケースはこれです
EncapsulationViolator ev = new EncapsulationViolator();
object o = ev.AbuseMe;
o.SetValue(newValue);
メンバーabuseMeの状態が変更されたため、evの状態は推移性によって変化しました。
DDDのコンテキストでは、オブジェクトが集約ルートである場合、これはOKではありません。引用します
外部オブジェクトがルートへの参照のみを保持できるようにします。内部メンバーへの一時的な参照は、単一の操作内でのみ使用するために渡すことができます。ルートはアクセスを制御するため、内部の変更によって目隠しすることはできません。
[ドメイン駆動設計、エリックエバンス]
...セッターシュメッター..。