1. 程式人生 > >設計模式---備忘錄模式

設計模式---備忘錄模式

定義

備忘錄模式:在不破壞封裝性的前提下,捕獲一個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。

備忘錄模式通常有一下幾種角色:

● Originator發起人角色 記錄當前時刻的內部狀態,負責定義哪些屬於備份範圍的狀態,負責建立和恢復備忘錄資料。 ● Memento備忘錄角色 負責儲存Originator發起人物件的內部狀態,在需要的時候提供發起人需要的內部狀態。 ● Caretaker備忘錄管理員角色 對備忘錄進行管理、儲存和提供備忘錄。

案例

/**
 * 備忘錄類
 */
public class Memento {

    private String state;

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

    public String getState() {
        return state;
    }

}
/**
 * 發起人
 */
public class Originator {

    private String state;

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

    public String getState() {
        return state;
    }

    //儲存狀態到備忘錄物件
    public Memento saveStateToMemento() {
        return new Memento(state);
    }

    //從備忘錄物件中獲取狀態
    public void getStateFromMemento(Memento memento) {
        state = memento.getState();
    }

}
/**
 * 備忘錄管理人員
 */
public class CareTaker {

    private List<Memento> mementoList = new ArrayList<>();

    //新增備忘錄物件
    public void add(Memento memento) {
        mementoList.add(memento);
    }

    //獲取備忘錄物件
    public Memento get(int index) {
        return mementoList.get(index);
    }

}