中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java備忘錄模式實現狀態恢復

發布時間:2024-09-29 19:20:31 來源:億速云 閱讀:82 作者:小樊 欄目:編程語言

備忘錄模式(Memento Pattern)是一種行為設計模式,它允許在不破壞封裝性的前提下捕獲一個對象的內部狀態,并在該對象之外保存這個狀態。以后可以恢復對象到這個狀態。

在 Java 中實現備忘錄模式主要包括三個角色:

  1. Originator(發起人):記錄當前時刻它的內部狀態,并可以使用備忘錄對象恢復到之前的狀態。
  2. Memento(備忘錄):負責存儲發起人的內部狀態,并可防止發起人以外的對象訪問備忘錄。
  3. Caretaker(管理者):負責保存好備忘錄對象,且不能對備忘錄的內容進行操作或檢查。

下面是一個簡單的 Java 代碼示例,展示如何使用備忘錄模式實現狀態恢復:

import java.util.HashMap;
import java.util.Map;

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

    public String getState() {
        return state;
    }

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

    // 保存狀態到備忘錄
    public Memento saveToMemento() {
        return new Memento(state);
    }

    // 恢復狀態從備忘錄
    public void restoreFromMemento(Memento memento) {
        this.state = memento.getState();
    }
}

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

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

    public String getState() {
        return state;
    }
}

// 管理者類
class Caretaker {
    private Map<String, Memento> mementoList = new HashMap<>();

    public void addMemento(String key, Memento memento) {
        mementoList.put(key, memento);
    }

    public Memento getMemento(String key) {
        return mementoList.get(key);
    }
}

public class MementoPatternDemo {
    public static void main(String[] args) {
        Originator originator = new Originator();
        Caretaker caretaker = new Caretaker();

        originator.setState("State1");
        System.out.println("Current state: " + originator.getState());
        caretaker.addMemento("key1", originator.saveToMemento());

        originator.setState("State2");
        System.out.println("Current state: " + originator.getState());
        caretaker.addMemento("key2", originator.saveToMemento());

        originator.restoreFromMemento(caretaker.getMemento("key1"));
        System.out.println("Restored state: " + originator.getState());
    }
}

在這個例子中,Originator 類記錄當前狀態并提供了保存和恢復狀態的方法。Memento 類負責存儲狀態信息。Caretaker 類負責管理備忘錄對象,可以保存和獲取備忘錄。在 main 方法中,我們創建了一個 Originator 對象,并使用 Caretaker 對象保存和恢復狀態。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

青海省| 长寿区| 景宁| 乌兰县| 霍林郭勒市| 施甸县| 图片| 毕节市| 江口县| 老河口市| 旺苍县| 休宁县| 扎鲁特旗| 沙坪坝区| 商城县| 阿巴嘎旗| 永兴县| 任丘市| 革吉县| 余姚市| 迭部县| 遵化市| 沂源县| 红原县| 泽州县| 微山县| 荥阳市| 毕节市| 从江县| 左贡县| 旺苍县| 安康市| 米脂县| 克拉玛依市| 清水河县| 额尔古纳市| 图们市| 蒲城县| 盐源县| 肥东县| 搜索|