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 + -
显示快捷键?