JavaでHello World
Google
  HOME  |  基礎  |  掲示板  |  ツール |  書籍  |  デザインパターン  |  リンク  |  フィードバック
JavaでHello World > デザインパターン > Mementoパターン  
メニュー
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  田中宏和
Mementoパターン
◆概要
カプセル化を破壊せずに、オブジェクトの内部状態を捉えて外面化しておき、オブジェクトを後でこの状態に戻すことができるようにする
◆UML
◆ここでの環境
OS Windows XP
J2SE SDK 1.4.1_01
◆概念的なソースコード
Originator.java(ここからダウンロード)
public class Originator {
  private String state = "OFF";
  public String getState() {
    return state;
  }
  public void setState(String state) {
    this.state = state;
  }

  public Memento createMemento() {
    return new Memento(state);
  }
  public void setMemento(Memento memento) {
    state = memento.getState();
    System.out.println("状態を" + state + "に戻しました");
  }
}
Memento.java(ここからダウンロード)
public class Memento {
  private String state;

  public Memento(String state) {
    this.state = state;
  }
  public String getState() {
    return state;
  }
}
Caretaker.java(ここからダウンロード)
public class Caretaker {
  Memento memento;
  public Memento getMemento() {
    return memento;
  }
  public void setMemento(Memento memento) {
    this.memento = memento;
  }
}
Client.java(ここからダウンロード)
public class Client {
  public static void main(String[] args) {
    Originator o = new Originator();
    o.setState("ON");

    Caretaker ct = new Caretaker();
    ct.setMemento(o.createMemento());

    o.setState("OFF");

    o.setMemento(ct.getMemento());
  }
}
 
◆実行
コマンドプロンプト
C:\JavaHello\Memento>javac *.java

C:\JavaHello\Memento>java Client
状態をONに戻しました

C:\JavaHello\Memento>

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

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