可以利用Memonto Pattern達到這個目標
把Memonto物件放在要提供Undo功能的程式中(Subject)
參與者
1.Memonto
Memonto本身利用一個陣列來儲存資料,當要restor資料,再
由陣列倒回來
public class Memonto {
private Vector<String> memos=new Vector<String>();
public void save(String value){
memos.add(value);
}
public String restoreLast(){
memos.removeElementAt(memos.size()-1);
return result;
}
}
2.Subject
要使用memo功能的主程式
當主程式執行save功能時,是把資料丟給memo去儲存
當要undo時,再利用memo把資料取回,寫回本應用程式的變數中
public class Subject {
private Memonto memo;
private String myText;
public Subject(){
memo=new Memonto();
}
public void save(String value){
myText=value;
memo.save(myText);
}
public String undo(){
myText=memo.restoreLast();
return myText;
}
}
3.Main
外部程式,只要呼叫應用程式提供的save跟undo method即可
不用管subject內部memo如何運作
TextField text=new TextField()
Subject subject=new Subject();
儲存
subject.save(text.getText());
Undo
text.setText(subject.undo());
沒有留言:
張貼留言