23設計模式之備忘錄模式 Memento

2021-07-08 10:04:13 字數 1174 閱讀 5331

memento屬於行為型模式中的一種,在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。

必須儲存乙個物件在某乙個時刻的(部分)狀態,這樣以後需要時它才能恢復到先前的狀態。

如果乙個用介面來讓其它物件直接得到這些狀態,將會暴露物件的實現細節並破壞物件的封裝性。

memento:備忘錄儲存原發器物件的內部狀態。

originator:原發器建立乙個備忘錄,用以記錄當前時刻它的內部狀態。使用備忘錄恢復內部狀態。

caretaker:負責儲存好備忘錄。不能對備忘錄的內容進行操作或檢查。

import cocoa

/// memento備忘錄儲存原發器物件的內部狀態

private

class memento

/// caretaker負責儲存好備忘錄,不能對備忘錄的內容進行操作或檢查

private

class caretaker

/// originator原發器建立乙個備忘錄,用以記錄當前時刻它的內部狀態。使用備忘錄恢復內部狀態

private

class originator

// mark: 將資料重新匯入

func setmemento(_ memento: memento)

// mark: 顯示

func showstate()

}

測試

let org = originator()

org.state = "開會中"

let ctk = caretaker()

// 將資料封裝在caretaker

ctk.memento = org.creatememento()

org.state = "睡覺中"

org.showstate()// 顯示

org.setmemento(ctk.memento!)//將資料重新匯入

org.showstate()

framework

時間描述

2015-11-27

博文完成

csdn:

github:

23種設計模式之備忘錄模式

備忘錄模式是一種行為模式,該模式用於儲存物件當前狀態,並且在之後可以再次恢復到此狀態 此文主要參考 android原始碼設計模式解析與實戰 一書 備忘錄模式的定義在不破壞封閉的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態,這樣,以後就可將該物件恢復到原先儲存的狀態。備忘錄模式的使用場景...

23種設計模式之備忘錄模式(21)

備忘錄 memento 在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。發起人 originator 類 date 2020 9 24 public class originator public void setstate st...

設計模式之備忘錄模式

機器 public class machine public void startplay disc.setluminance 60 disc.settime 0 disc.setvolume 80 public void stopplay disc.setluminance 70 disc.set...