11.1

liuxuechao發表於2024-11-20

備忘錄模式

下面是一個簡單的備忘錄模式的示例程式碼,使用Java語言實現:

// 備忘錄類
class Memento {
    private String state;

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

    public String getState() {
        return state;
    }
}

// 發起人類
class Originator {
    private String state;

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

    public String getState() {
        return state;
    }

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

    public void restoreMemento(Memento memento) {
        this.state = memento.getState();
    }
}

// 管理者類
class Caretaker {
    private Memento memento;

    public void setMemento(Memento memento) {
        this.memento = memento;
    }

    public Memento getMemento() {
        return memento;
    }
}

// 測試類
public class MementoPatternExample {
    public static void main(String[] args) {
        Originator originator = new Originator();
        Caretaker caretaker = new Caretaker();

        // 設定初始狀態
        originator.setState("State 1");
        System.out.println("初始狀態:" + originator.getState());

        // 儲存狀態
        caretaker.setMemento(originator.createMemento());

        // 修改狀態
        originator.setState("State 2");
        System.out.println("修改後的狀態:" + originator.getState());

        // 恢復狀態
        originator.restoreMemento(caretaker.getMemento());
        System.out.println("恢復後的狀態:" + originator.getState());
    }
}

在上述示例中,我們定義了三個類:Memento(備忘錄類)、Originator(發起人類)和Caretaker(管理者類)。發起人類儲存當前狀態、建立備忘錄物件、恢復狀態;備忘錄類儲存狀態資訊;管理者類負責儲存備忘錄物件。

在測試類中,我們建立了一個發起人物件和一個管理者物件。我們透過設定初始狀態、建立備忘錄、修改狀態、恢復狀態的步驟來演示備忘錄模式的使用。透過儲存和恢復備忘錄物件,我們可以在需要時回滾到之前的狀態。

這個簡單的示例展示了備忘錄模式的基本結構和使用方法。實際應用中,可以根據具體需求擴充套件和最佳化備忘錄模式的實現。

相關文章