Memento Pattern
透過對象外的存檔,讓對象能夠載入之前的狀態。
Example: 仿真Git
備忘錄模式會將類別分成三類:
分別是原始類別 (Originator) 、 備忘錄類別 (Memento) 與 管理類別 (Caretaker) 。
原始類別為具有內部狀態的標的。
備忘錄類別為儲存的原始類別,擁有當時的內部狀態。
管理類別負責備忘錄類別的存儲,並留下歷史紀錄。
優點:
可以在不破壞封裝性的情況下,保存物件的狀態。
可以藉由管理類別,輕易地恢復先前原始類別的狀態。
缺點:
當備忘錄類別過多時,會佔用大量的內存。
與其他模式的比較:
[命令模式]:
命令模式的層級為一道道的不同的命令。
備忘錄模式的層級則為原始類別的狀態。
[原型模式]:
原型模式相當類似備忘錄模式,但缺少了存儲的管理類別。
ʕ •ᴥ•ʔ:玩過RPG遊戲就會理解的模式。