Memento记忆模式

原创 2015年07月06日 21:28:12
//Memento记忆模式。
#include <iostream>
#include <string.h>
using namespace std;


class Memento;
class Originator
{
public:
    Originator(char *s = "")
    {
        _str = new char[100];
        strcpy(_str,s);
    }
    void SetSate(char *s)
    {
        strcpy(_str,s);
    }
    void Setmem();
    void RestoretoMem();
    void Printf()
    {
        cout << "Originator::"<<_str << endl;
    }
private:
    Memento *mem;
    char *_str;
};

class Memento
{
public:
    Memento(){}
    Memento(const char *s)
    {
        m_t = new char[strlen(s)];
        strcpy(m_t,s);
    }
    char *GetStr()
    {
        return m_t;
    }
private:
    char *m_t;
};

void Originator::RestoretoMem()
{
    _str = mem->GetStr();
}
void Originator::Setmem()
{
    mem = new Memento(_str);
}
int main()
{
    Originator *tor = new Originator("已经到要到夏天了!");
    tor->Printf();
    tor->Setmem();//保存一份。
    tor->SetSate("早就到夏天了!");//转换为新的状态。
    tor->Printf();

    tor->RestoretoMem();//回到原来的状态。
    tor->Printf();

    return 0;
}


相关文章推荐

C++ Memento模式

  • 2015年02月09日 10:09
  • 50KB
  • 下载

备忘录模式(Memento)—通风系统

定义: 备忘录模式又叫做快照模式,或Token模式,是对象的行为模式。 备忘录对象是一个用来存储另外一个对象内部状态的快照的对象,其用意是在不破坏封装的前提下,将一个对象的状态捕捉住,并外部化,存...
  • wugouzi
  • wugouzi
  • 2016年01月25日 17:10
  • 442

Memento模式

  • 2007年08月18日 22:44
  • 868B
  • 下载

Java 实现备忘录(Memento)模式

/** * 数据对象 * @author stone * */ public class DataState { private String action; public void s...

十五、备忘录模式 memento

一、定义 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 二、结构图 三、代码示例 /** * @us...

《GOF设计模式》—备忘录(MEMENTO)—Delphi源码示例:备忘录接口

示例:备忘录接口 说明: (1)、定义 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Memento记忆模式
举报原因:
原因补充:

(最多只允许输入30个字)