在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原來儲存的狀態。
本文介紹了備忘錄模式**框架,**使用c++語言描述,**存在的不足或問題有望各位指出。
備忘錄模式框架
#include
#include
using
namespace
std;
class memento;
class originator
~originator(){}
memento* creatememento();
void setmemento(memento *memento);
void setstate(string state)
string getstate()
void show()
;class memento
~memento(){}
memento(string state)
string getstate()
private:
string state;
};memento* originator::creatememento()
void originator::setmemento(memento *memento)
class caretaker
void setmemento(memento* me)
private:
memento *me;
};int main()
1、要儲存的細節給封裝在了memento中了,哪一天要更改儲存的細節也不用影響客戶端了。2、memento模式比較適用與功能比較複雜的,但需要維護或記錄屬性歷史的類,或者需要儲存的屬性只是眾多屬性中的一小部分時,originator可以根據儲存的memento資訊還原到前一狀態。
3、如果某個系統中使用命令模式時,需要實現命令的撤銷功能,那麼命令模式可以使用備忘錄模式來儲存可撤銷操作的狀態。使用備忘錄可以把複雜的物件內部資訊對其他的物件遮蔽起來。
設計模式(十四)備忘錄模式
十四 備忘錄模式 在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件外儲存這個狀態。這樣以後就可以將該物件恢復到原先儲存的狀態。備忘錄模式比較適用於功能比較複雜的,但需要維護或記錄屬性歷史的類,或者需要儲存的屬性只是眾多屬性中的一小部分時,發起人可以根據儲存的備忘錄資訊還原到前一狀態。十四 ...
十四 備忘錄模式
備忘錄 memento 在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。originator 發起人 負責建立乙個備忘錄memento,用以記錄當前時刻他的內部狀態 並可以使用備忘錄恢復內部狀態。ifndef ortiginato...
C 設計模式 備忘錄模式
應用 ifndef caretaker h define caretaker h include memento.h class caretaker void setmemento memento memento 備忘錄物件 private memento memento endif caretak...