State パターン MyMain public class MyMain { public static void main(String args[]) { MyContext context = new MyContext(); context.changeState(MyStateNight.getInstance()); for (int i = 0; i <= 24; i++) { System.out.print(i); System.out.println("時"); // 状態を変更するタイミングは、Context クラスではなく、 // State クラスが決定する context.setClock(i); } } } MyContext public class MyContext { public MyState state; public MyContext()
State パターン 「State」という英単語は、「状態」を意味します。 このパターンでは、ある物についての各状態をそれに対応した各クラスで表現します。(つまり、状態1つにつき、クラス1つで表現します。) 通常、条件(状態)に一致するか否かの処理は、if文を使用し、コーディングしますが、その条件分岐数が多い場合、1つの条件で処理するコード量が多い場合、また同じ条件分岐が複数の箇所に点在する場合等、メンテナンスし辛いものとなってしまいます。しかし、このパターンを適用すると、その状態状態を個々のクラスで表現するため、単純明快となります。 役割り 1. State(状態) 状態を表すクラスです。 状態毎に振舞いが異なるメソッドのインタフェースを定義します。 2. ConcreteStateA・B(具体的な状態) 「State」のインタフェースを実装し、具体的な状態を、「1クラス」 = 「1状態
元ネタ - iマリオでデザインパターン その1 【Strategyパターン】 - hidecheckの日記 そのエントリーのコメントにも書いたとおり、StateパターンとStrategyって混同しやすいと思う。(もしかしたら今もそうかも。ツッコミください。) そこで僕もStateパターンで何かマリオ的なモノを作ってみようということで、やってみた。とりあえず今回の仕様はこちら。(実際のマリオの挙動と違うかもですが、そこはご了承を!) 今、デフォマリオの状態 スーパーきのこを食べた⇒デカマリオになる ファイアフラワーを食べた⇒デカマリオになる ノコノコに当たった⇒ゲームーオーバー 今、デカマリオの状態 スーパーきのこを食べた⇒デカマリオになる(というか変化無し) ファイアフラワーを食べた⇒ファイヤーマリオになる ノコノコに当たった⇒デフォマリオになる 今、ファイヤーマリオの状態 スーパーきのこ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く