JavaでHello World
Google
  HOME  |  基礎  |  掲示板  |  ツール |  書籍  |  デザインパターン  |  リンク  |  フィードバック
JavaでHello World > デザインパターン > Stateパターン  
メニュー
Home
情報交換掲示板
Factory Method
Abstract Factory
Builder
Prototype
Singleton
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
Chain Of Responsibility
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
Strategy
Template Method
Visitor
  2003/07/25  田中宏和
Stateパターン
◆概要
オブジェクトの内部状態が変化したときにオブジェクトの処理内容を変えられるようにする
◆UML
◆ここでの環境
OS Windows XP
J2SE SDK 1.4.1_01
◆概念的なソースコード
State.java(ここからダウンロード)
abstract class State {
  abstract public void handle(Context context);
}
ConcreteStateA.java(ここからダウンロード)
public class ConcreteStateA extends State{
  public void handle(Context context) {
    context.setState(new ConcreteStateB());
  }
}
ConcreteStateB.java(ここからダウンロード)
public class ConcreteStateB extends State {
  public void handle(Context context) {
    context.setState(new ConcreteStateA());
  }
}
Context.java(ここからダウンロード)
public class Context {
  private State state;

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

  public void request() {
    state.handle(this);
  }
  public void displayState() {
    System.out.println("状態は" + state.getClass().getName() + "です");
  }
}
Client.java(ここからダウンロード)
public class Client {
  public static void main(String[] args) {
    Context c = new Context(new ConcreteStateA());
    c.displayState();

    c.request();
    c.displayState();

    c.request();
    c.displayState();
  }
}
 
◆実行
コマンドプロンプト
C:\JavaHello\State>javac *.java

C:\JavaHello\State>java Client
状態はConcreteStateAです
状態はConcreteStateBです
状態はConcreteStateAです

C:\JavaHello\State>

おおおお!実行できましたね!

 
 
  ネットで買えば断然お得!お買い物なら楽天市場
ツールの部屋 - Java関連の書籍 - デザインパターン - 情報交換掲示板 - HOME