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...