DesignPattern - Behavioral - Memento

Tue, Aug 7, 2018 閱讀時間 1 分鐘

Memento

當我們想要保存對象的狀態以便以後恢復它時,我們使用備忘錄設計模式。備忘錄模式有助於以這樣一種方式實現這一點,即對象的已保存狀態數據在對像外部無法訪問;這保護了已保存狀態數據的完整性。

實現 Memento 模式的想法始於兩個對象—— Originator 和 Caretaker。Originator是需要保存和恢復狀態的對象,它使用一個內部類來保存Object的狀態。內部類稱為 Memento 及其私有,因此無法從其他對象訪問。

Caretaker 是幫助類,負責通過 Memento 對象存儲和恢復 Originator 的狀態。由於 Memento 對 Originator 是私有的,因此 Caretaker 無法訪問它,並且它作為 Object 存儲在 caretaker 中。

現實生活中最好的例子之一是 IDE, 我們可以隨時保存其數據並使用撤消將其恢復到以前保存的狀態。

  • 必須保存對象狀態(某些部分)的快照,以便以後可以將其恢復到該狀態,並且
  • 獲取狀態的直接接口會暴露實現細節並破壞對象的封裝。