設計模式---備忘錄模式(C++實現)


/**********************************************************
備忘錄模式:
就是用一個類來保存一個類的中間狀態;;;;;
如果想大規模的保存和管理狀態那么就要是用一個管理類-------
-------就好比命令模式的時候,命令太多的話,我們在把他給管理起來------------
發起類中要有:設置狀態的成員函數,創建包含當前狀態信息的對象
通過管理類中的,發起類的指針傳遞,設置當前類中的狀態。
*********************************************************/
#include <iostream>
#include <string>
using namespace std;
class Memo;
class Originator//初始狀態類,我們想保存其中一個狀態
{
public:
string state;
Memo* CreateMemo();
void SetMemo(Memo* memo);
void Show()
{ cout << "狀態:" << state << endl;}
};
class Memo//備忘錄類,保存狀態所使用到的結構
{
public:
string state;
Memo(string strState)
{state = strState;}
};
Memo* Originator::CreateMemo(){
return new Memo(state);}//通過返回一個包含中間狀態的對象
void Originator::SetMemo(Memo* memo){
state = memo->state;}
class Caretaker//管理者類
{
public:
Memo* memo;//管理者類中包含了,保存狀態的結點對象的指針
}; //這樣就可以通過這個指針,操作結點的狀態
void main()
{
Originator* on = new Originator();
on->state = "on";
on->Show();
Caretaker* c = new Caretaker();//使用此指針指向這個,包含中間狀態的對象
c->memo = on->CreateMemo();


on->state = "off";
on->Show();


on->SetMemo(c->memo);
on->Show();
system("pause");

}

參考:傳智播客--尹成


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com