クラスのインスタンスを、あるクラスからは読み書きができるが、別のあるクラスからは読み取り専用とする手法。
読み取り専用のインタフェースを作りそれを実装してクラスを作成し、読み取り専用にしたいクラスに対してはそのインタフェースとして渡すようにする。
// 読み取り専用インタフェース public interface ImmutableData { public int getParam(); }
public class Data implements ImmutableData { private int Param; public int getParam() { return Param; } public void setParam(int param) { Param = param; } }
// 読み取り専用として渡す public class Test { private Data data; ... public ImmutableData getData() { return data; } }
ImmutableDataにはgetParamメソッドはあるが、値を設定するsetParamメソッドがないので読み取り専用となる。