Memento 备忘录模式

来源:互联网 发布:淘宝网理发店挂画 编辑:程序博客网 时间:2024/05/19 14:36

  

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

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

例:

#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;

};

 

客户端:

int 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();

       return 0;

}

原创粉丝点击