ゲッターとセッターの使い方と、ドメインモデルオブジェクトのカプセル化の目的を無効にする方法についての記事や記事を読んだことがあります。私は、セッターを使用しないという背後にあるロジックを理解しています。オブジェクトコードとインバリアントのコンテキスト外で、クライアントコードがそのオブジェクトの属性を操作できるようにしています。DDDとゲッターとセッターの使用
今、このプリンシパルは私を混乱させます。たとえば、オブジェクトのメンバ変数の値を変更する必要がある場合はどうなりますか?たとえば、人の名前が変更された場合、これをモデルに反映させるにはどうすればよいですか?最初は私は、なぜChangeNameという名前の関数を持っていないのでしょうか?私は新しい名前を渡して、内部の '名前'変数を変更することができます。まあ....それはちょうどセッターではありません!
私が明確にする必要があるのは、もし私がセッターを完全になくしたいのであれば、上記のような状況では、私はコンストラクタのパラメータだけに頼っていますか?以前の属性値の代わりに新しい属性値をコンストラクタ経由で渡す必要があります。その後、オブジェクトを永続インフラストラクチャに渡して変更を保持できますか?
これら二つの記事は、この説明に役立ちます。