設計模式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

相關文章
相關標籤/搜索