備忘錄模式

Memento Pattern

透過對象外的存檔,讓對象能夠載入之前的狀態。

Example: 仿真Git


備忘錄模式會將類別分成三類:
分別是原始類別 (Originator)備忘錄類別 (Memento)管理類別 (Caretaker)

原始類別為具有內部狀態的標的
備忘錄類別為儲存的原始類別,擁有當時的內部狀態
管理類別負責備忘錄類別的存儲,並留下歷史紀錄


優點
可以在不破壞封裝性的情況下,保存物件的狀態。
可以藉由管理類別,輕易地恢復先前原始類別的狀態。

缺點
當備忘錄類別過多時,會佔用大量的內存。


與其他模式的比較:

[命令模式]:
命令模式的層級為一道道的不同的命令
備忘錄模式的層級則為原始類別的狀態

[原型模式]:
原型模式相當類似備忘錄模式,但缺少了存儲的管理類別。


ʕ •ᴥ•ʔ:玩過RPG遊戲就會理解的模式。