備忘錄模式(memento),再不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。
memento模式比較適用於功能比較複雜的,但需要維護或記錄屬性歷史的類,或者需要儲存的屬性只是眾多屬性中的一小部分是,originator可以根據儲存的memento資訊還原到前一狀態。
如果某個系統中使用命令模式時,需要實現命令的撤銷功能,那麼命令模式可以使用備忘錄模式來儲存可撤銷的狀態。
當角色的狀態改變的時候,有可能這個狀態無效,這時候就可以使用暫時儲存起來的備忘錄將狀態復原。
要儲存的細節封裝在了memento中,如果需要修改儲存的細節,這個時候不會影響客戶端。
角色狀態需要完整儲存到備忘錄物件中,如果狀態資料很大很多,那麼在資源消耗上,備忘錄物件會非常耗記憶體。
memento:備忘錄類
originator:發起人/**
* 備忘錄類
* * created by zhenguo on 11/30/14.
*/public class memento
public string getstate()
}
caretaker:管理者類/**
* 發起人
* * 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()
}
client:客戶端呼叫/**
* 管理者類
* * created by zhenguo on 11/30/14.
*/public class caretaker
public void setmemento(memento memento)
}
設計模式系列:/**
* 客戶端呼叫
* 備忘錄模式(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...