设计模式 之 《备忘录模式》

GOOD:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以将以后的对象状态恢复到先前保存的状态。

适用于功能比较复杂的,但需要记录或维护属性历史的类或者需要保存的属性只是众多属性中的一小部分时Originator可以根据保存的Memo还原到前一状态。

 

 

#ifndef __MEMO_MODEL__
#define __MEMO_MODEL__

#include <iostream>
#include <string>
using namespace std;
/*
GOOD:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以将以后的对象状态恢复到先前保存的状态。
适用于功能比较复杂的,但需要记录或维护属性历史的类;或者需要保存的属性只是众多属性中的一小部分时Originator可以根据保存的Memo还原到前一状态。
*/
class Memo;

//发起人类
class Originator
{
public:
    string state;
    Memo* createMemo();
    void setMemo(Memo* memo);
    void show(){ cout<<"状态:"<<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;
};

#endif //__MEMO_MODEL__

/*
#include "MemoModel.h"
int _tmain(int argc, _TCHAR* argv[])
{
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();

return 0;
}
*/

 

 

原文地址:https://www.cnblogs.com/MrGreen/p/3420527.html