设计模式简单代码之Memento模式
来源:互联网 发布:手机淘宝评价怎么修改 编辑:程序博客网 时间:2024/04/29 20:03
Memento模式,也称为备忘录模式,作用是保存对象的状态,并在需要的时候恢复对象的状态。
这个模式相对比较简单,它有一个Originator(原生者),就是需要被保存状态以便恢复的那个对象;
一个Memento对象,这个对象主要是保存原生者的状态,并在适当的时间恢复到原生者里去。而这个适当的时间就是
由CareTaker(管理者)来决定的。
在现实中的应用最常见的就是实现系统的Undo操作了。
下面看一个简单的例子就可以明白了:
// Memento.cpp
#include <string>
#include <iostream>
using namespace std;
class Originator;
class Memento
...{
public:
string GetState()
...{
return m_state;
}
void SetState(string &s)
...{
m_state = s;
}
private:
string m_state;
};
class Originator
...{
public:
Memento* CreateMemento()
...{
Memento *m = new Memento();
m->SetState(m_state);
return m;
}
void SetMemento(Memento *m)
...{
m_state = m->GetState();
}
void SetState(string &s)
...{
m_state = s;
}
string GetState()
...{
return m_state;
}
private:
string m_state;
};
// 这里的main就充当管理者
void main()
...{
Originator o;
o.SetState(string("状态1"));
cout << "原生者的初始状态:" << o.GetState() << endl;
// 取得状态
Memento *pm;
pm = o.CreateMemento();
o.SetState(string("状态2"));
cout << "原生者的现在状态:" << o.GetState() << endl;
// 恢复状态1
o.SetMemento(pm);
cout << "恢复状态后:" << o.GetState() << endl;
delete pm;
pm = NULL;
}
#include <iostream>
using namespace std;
class Originator;
class Memento
...{
public:
string GetState()
...{
return m_state;
}
void SetState(string &s)
...{
m_state = s;
}
private:
string m_state;
};
class Originator
...{
public:
Memento* CreateMemento()
...{
Memento *m = new Memento();
m->SetState(m_state);
return m;
}
void SetMemento(Memento *m)
...{
m_state = m->GetState();
}
void SetState(string &s)
...{
m_state = s;
}
string GetState()
...{
return m_state;
}
private:
string m_state;
};
// 这里的main就充当管理者
void main()
...{
Originator o;
o.SetState(string("状态1"));
cout << "原生者的初始状态:" << o.GetState() << endl;
// 取得状态
Memento *pm;
pm = o.CreateMemento();
o.SetState(string("状态2"));
cout << "原生者的现在状态:" << o.GetState() << endl;
// 恢复状态1
o.SetMemento(pm);
cout << "恢复状态后:" << o.GetState() << endl;
delete pm;
pm = NULL;
}
- 设计模式简单代码之Memento模式
- 设计模式之Memento
- 设计模式之Memento
- 设计模式之 memento
- 设计模式之MemenTo模式
- 设计模式之Memento模式
- 设计模式之Memento(备忘录)
- 设计模式之Memento备忘模式
- 设计模式读书笔记之备忘录模式(Memento)
- 设计模式之备忘录模式Memento
- 设计模式之备忘录模式(Memento Pattern)
- 常见设计模式之Memento模式
- java设计模式之备忘录模式Memento
- 设计模式之备忘录模式(Memento)
- 设计模式之备忘录模式,memento
- 设计模式之备忘录模式(Memento)
- 设计模式入门之备忘录模式Memento
- 设计模式之备忘录模式(Memento)摘录
- FormatDate2String
- 后台添加javascript高亮显示
- 200608010
- GetSerialNoByOrders
- getPigeonNames
- 设计模式简单代码之Memento模式
- 看了你就想结婚!)
- 明朝的那些事儿
- (长篇)明朝的那些事儿
- VS2005中的新项目类型:Web Deployment Projects
- 长篇)明朝的那些事儿-历史应该可以写得好看[324]
- 创造扫雷新纪录,纪念一下……
- C#编写最小化时隐藏为任务栏图标的Window appllication
- session丢失问题