设计模式-备忘录模式

shienh 2020年01月26日 249次浏览

备忘录(Memento)模式的定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。该模式又叫快照模式。

#include <iostream>
#include <string>
using namespace std;

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

class Origin{
public:
    Origin(){}
    Memento createMemento(){
        Memento m(state);
        return m;
    }

    void setMementto(const Memento& m){
        state = m.getState();
    }
private:
    string state;
};

int main(int argc, char *argv[])
{
    Origin origin;
    //存储到备忘录
    Memento men = origin.createMemento();
    
    //改变origin状态... ...
    
    //从备忘录中恢复
    origin.setMementto(men);
    return 0;
}