@634

State パターン

Advertisement

状態をクラス化する

状態をクラスとして表す。コード中に状態を判定するif文を記述する必要がなくなるため、コードの可視性が向上する。状態を追加する際に、コードを修正する必要がない。などのメリットがある。

サンプルコード

インタフェース state
public interface State {
    public void draw();
}

Square クラス
public class Square implements State {
    public void draw() {
        System.out.println("■");
    }
}

Triangle クラス
public class Triangle implements State {
    public void draw() {
        System.out.println("▲");
    }
}

Pen クラス
public class Pen {
    private State state;

    public Pen(){
        this.state = new Triangle();
    }

    public void draw(){
        state.draw();
    }

    public void setState(State state){
        this.state = state;
    }
}

Main クラス
public class Main {
    public static void main(String[] args){
        Pen pen = new Pen();
        pen.draw();
        pen.setState(new Square());
        pen.draw();
        pen.setState(new Triangle());
        pen.draw();
    }
}

実行結果
▲
■
▲

クラス図

State

Advertisement

ショートカット

634
634ブログ
このカテゴリのトップページに戻る
Incubator(Pukiwiki)
634ラボ
   UIコレクションギャラリー
   ZO-3ジェネレーター

サイト検索


Y!ログール