ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

Immutable Interface

クラスのインスタンスを、あるクラスからは読み書きができるが、別のあるクラスからは読み取り専用とする手法。
読み取り専用のインタフェースを作りそれを実装してクラスを作成し、読み取り専用にしたいクラスに対してはそのインタフェースとして渡すようにする。

// 読み取り専用インタフェース
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メソッドがないので読み取り専用となる。


参考文献:『Java言語で学ぶリファクタリング入門』