C 設計模式(十四) 備忘錄模式

2021-08-19 18:16:00 字數 1127 閱讀 5623

在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原來儲存的狀態。

本文介紹了備忘錄模式**框架,**使用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...