caretaker.java
来自「源码为科学出版社出版的英文<java设计模式>(影印版)所用的所有例」· Java 代码 · 共 50 行
JAVA
50 行
import java.util.*;
public class Caretaker {
private Vector undoList;
private Vector drawings;
public Caretaker(Vector drw) {
undoList = new Vector();
drawings = drw;
}
//------------------------------------
public void rememberPosition(visRectangle rect) {
Memento m = new Memento(rect);
undoList.addElement(m);
}
//------------------------------------
public void clear(Vector drw) {
undoList = new Vector();
drawings = drw;
}
//------------------------------------
public void addElement(Object obj) {
undoList.addElement (obj);
}
//------------------------------------
private void remove(Integer obj) {
Object drawObj = drawings.lastElement();
drawings.removeElement(drawObj);
}
//------------------------------------
private void remove(Memento obj) {
Memento m = (Memento)obj;
m.restore(); //and restore the old position
}
//------------------------------------
public void undo() {
if (undoList.size() > 0) {
//get last element in undo list
Object obj = undoList.lastElement();
undoList.removeElement(obj); //and remove it
if (obj instanceof Integer)
remove((Integer)obj); //remove Integer or Memento
else
remove((Memento)obj);
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?