设计模式16——Memento设计模式

Memento备忘录设计模式是一个保存另一个对象内部状态拷贝的对象,这样之后就能够将该对象恢复到之前保存的状态。Memento备忘录设计模式的结构以下: java

Memento备忘录设计模式有如下3个重要角色: 设计模式

Originator:须要保存内部状态的对象。 this

Caretaker:为Originator保存并恢复状态的对象。 设计

Memento:存放Originator内部状态的对象,由Originator进行读写,而且Caretaker进行维护。 rest

Memento备忘录设计模式例子代码以下: code

// Memento
class Memento{
    private String state;
    public Memento(String state){
        this.state = state;
    }

    public String getState(){
        return state;
    }
}


// Caretaker
class Caretaker{
    private Stack<Memento> mementos = new Stack<Memento>();
    public void addMemento(Memento m){
        mementos.push(m);
    }

    public Memento getMemento(){
        if(!mementos.empty()){
            return mementos.pop();
        }
        return null;
    }
}


// Originator
public class Originator{
    private String state;
    public Originator(String state){
        this.state = state;
    }

    public void setState(){
        this.state = state;
    }

    public String getState(){
        return state;	
    }

    public Memento createMemento(String state){
        return new Memento(state);
    }

    public static void main(String[] args){
        Originator originator = new Originator(“State1”);
        Caretaker caretaker = new Caretaker();
        caretaker.addMemento(originator. createMemento(originator.getState()));
        originator.setState(“State2”);
        String restore = caretaker. getMemento().getState();
        System.out.println(“Current originator state=” + originator.getState() + “,restore state=” + restore);
    }
}


程序运行结果: 对象

Currentoriginator state= State2,restore state= State1 开发

Memento备忘录设计模式经常使用于文字编辑软件/IDE集成开发环境中的撤销和恢复操做。 get