Memento パターンAdvertisementオブジェクトの変更履歴を管理する
オブジェクトの状態が変更されるたびに状態を記録しておき、任意のタイミングで状態を元に戻せるようにする。
サンプルコード
Main クラス
public class Main {
public static void main(String[] args){
Bank bank = new Bank();
Account account = new Account();
for(int i = 0; i < 5; i++){
account.addMoney(100);
bank.setHistory((Account)account.clone());
account.showMoney();
}
account = bank.backHistory(2);
account.showMoney();
}
}
Bank クラス
import java.util.Vector;
public class Bank {
private Vector history = null;
public Bank(){
history = new Vector();
}
public void setHistory(Account account){
history.add(account);
}
public Account backHistory(int index){
System.out.println(index + "個前の状態に戻します。");
return (Account)history.elementAt(history.size() - index - 1);
}
}
Account クラス
public class Account implements Cloneable{
private int money;
public Account(){
money = 0;
}
public Account(int money){
this.money = money;
}
public void addMoney(int money){
this.money = this.money + money;
}
public void showMoney(){
System.out.println("現在の金額" + money + "円");
}
// 現在の状態のコピーを作成する
public Object clone(){
Object obj = null;
try{
obj = super.clone();
}catch(CloneNotSupportedException e){
e.printStackTrace();
}
return obj;
}
}
Advertisement |
ショートカット・634トップページ・このカテゴリのトップページに戻る ・634ラボ サイト検索Y!ログール |