2016-04-21 5 views
2

getterを使用してフィールドを非公開にすることは、一般的なケース(データ隠蔽、デカップリング、blah、blah、blah)では多くの利点があることを知っています。私が求めているのは、具体的にはimmutableクラスに関連しています。不変オブジェクトのパブリックフィールドの代わりにゲッターを使う理由は?

のは、私は例えば、REST応答からデータを格納するためのモデルクラスを作成したとしましょう:

public final class Profile { 
    private final int id; 
    private final String name; 
    private final String info; 
    private final String location; 
    private final URI avatar; 
    private final Gender gender; 
    // about 10 more fields 
} 

は、クラスとそのフィールドは、すべて最終的なもので、変更または上書きすることはできません。各フィールドは不変クラスのインスタンスであり、コンストラクタで検証されます。また、すべてのフィールドは公開されている必要があります(データ非表示はありません)。

このような場合、フィールドをパブリックにするのではなく、すべてのフィールドにゲッターを追加するために、クラスのサイズを3倍にすることができますか?

答えて

1

getterを実装すると、将来のProfileクラスの変更に柔軟性がもたらされます。あなたのクラスがゲッターを提供している場合、Profileクラスの基になるプライベートメンバーを変更することができ、クラスのコンシューマーに変更を加える必要はありません。クラスレベルの変数のデータ型を非表示にするのと同じように非表示にします。

関連する問題