91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

阳原县| 金堂县| 图木舒克市| 深水埗区| 张家口市| 禄劝| 蓬安县| 社旗县| 高阳县| 黄平县| 乐安县| 浪卡子县| 巴塘县| 依兰县| 比如县| 永安市| 华宁县| 清水河县| 盐边县| 白水县| 河北区| 华安县| 南靖县| 临清市| 郑州市| 东辽县| 佳木斯市| 青岛市| 湖北省| 宣城市| 厦门市| 涡阳县| 高清| 韶关市| 胶南市| 门源| 新干县| 长春市| 甘谷县| 石狮市| 陇川县|