设计模式(十七)Memento备忘录

1.使用场景:程序回溯到对象之前的某个状态
2.定义:在不破坏封装的前提下,捕获一个对象的内部状态
,并在该对象之外保存这个状态,
这样可以将该对象恢复到原先保存的状态


Memento设计模式代码:

class Memento
{
    string state;
    //..
public:
    Memento(const string & s) : state(s) {}
    string getState() const { return state; }
    void setState(const string & s) { state = s; }
};



class Originator
{
    string state;
    //....
public:
    Originator() {}
    Memento createMomento() {
        Memento m(state);
        return m;
    }
    void setMomento(const Memento & m) {
        state = m.getState();
    }
};



int main()
{
    Originator orginator;
    
    //捕获对象状态,存储到备忘录
    Memento mem = orginator.createMomento();
    
    //... 改变orginator状态
    
    //从备忘录中恢复
    orginator.setMomento(memento);

   
    
}


猜你喜欢

转载自blog.csdn.net/wxf2012301351/article/details/74937032