設計模式之備忘錄模式

2021-09-11 16:32:21 字數 1745 閱讀 4998

備忘錄模式(memento),再不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。

memento模式比較適用於功能比較複雜的,但需要維護或記錄屬性歷史的類,或者需要儲存的屬性只是眾多屬性中的一小部分是,originator可以根據儲存的memento資訊還原到前一狀態。

如果某個系統中使用命令模式時,需要實現命令的撤銷功能,那麼命令模式可以使用備忘錄模式來儲存可撤銷的狀態。

當角色的狀態改變的時候,有可能這個狀態無效,這時候就可以使用暫時儲存起來的備忘錄將狀態復原。

要儲存的細節封裝在了memento中,如果需要修改儲存的細節,這個時候不會影響客戶端。

角色狀態需要完整儲存到備忘錄物件中,如果狀態資料很大很多,那麼在資源消耗上,備忘錄物件會非常耗記憶體。

memento:備忘錄類

/**

* 備忘錄類

* * created by zhenguo on 11/30/14.

*/public class memento

public string getstate()

}

originator:發起人

/**

* 發起人

* * created by zhenguo on 11/30/14.

*/public class originator

public void setstate(string state)

public void setmemento(memento memento)

public memento creatememento()

public void show()

}

caretaker:管理者類

/**

* 管理者類

* * created by zhenguo on 11/30/14.

*/public class caretaker

public void setmemento(memento memento)

}

client:客戶端呼叫

/**

* 客戶端呼叫

* 備忘錄模式(memento),再不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。

* 這樣以後就可將該物件恢復到原先儲存的狀態。

* * created by zhenguo on 11/30/14.

*/public class client

}

設計模式系列:

建立型結構型

行為型工廠方法

簡單工廠

抽象工廠

建造者模式

單例模式

原型模式

組合模式

外觀模式

橋接模式

**模式

享元模式

介面卡模式

裝飾模式

策略模式

模板方法

狀態模式

觀察者模式

備忘錄模式

迭代器模式

命令模式

職責鏈模式

直譯器模式

訪問者模式

中介者模式

設計模式之備忘錄模式

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

設計模式之備忘錄模式

定義 在不破壞封閉的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。備忘錄模式有三個角色 以儲存遊戲進度為例,退出遊戲前存檔,再進入遊戲就會顯示退出之前的狀態。示例 遊戲發起人類 public class game public state cr...

設計模式之 備忘錄模式

定義 在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣就可以將該物件 恢復到原先儲存的狀態。很好理解,就像我們以前打通關遊戲一樣,打通某個關卡,就會備份一下,不然根本通不了關。備忘錄 負責儲存發起人物件的內部狀態,在需要的時候提供發起人需要的內部狀態。public c...