设计模式读书笔记:Memento(备忘录)

原创 2015年07月10日 21:11:10

意图:

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

结构图:来自 《23种设计模式 - 郗晓勇》


实现:https://github.com/panshiqu/patterns/tree/master/Memento

Memento

namespace NS_MEMENTO {

class Memento {
public:
	virtual ~Memento() {}

private:
	friend class Originator;
	Memento() : _state(false) {}
	bool getState(void)	{ return _state; }
	void setState(bool state)	{ _state = state; }

private:
	bool _state;
};

} /* namespace NS_MEMENTO */
Originator

#include "Memento.h"

namespace NS_MEMENTO {

class Originator {
public:
	Originator() : _state(false) {}
	virtual ~Originator() {}
	Memento *createMemento(void)
	{
		Memento *m = new Memento();
		m->setState(_state);
		return m;
	}
	void setMemento(Memento *m)
	{
		setState(m->getState());
	}

	bool getState(void)	{ return _state; }
	void setState(bool state)	{ _state = state; }

private:
	bool _state;
};

} /* namespace NS_MEMENTO */
main

#include <iostream>
#include "Memento/Memento.h"
#include "Memento/Originator.h"
using namespace NS_MEMENTO;
using namespace std;
int main(void)
{
	Originator o;
	Memento *m = o.createMemento();
	o.setState(true);
	o.setMemento(m);
	delete m;
	std::cout << o.getState() << std::endl;
}
附加:
版权声明:本文为博主原创文章,未经博主允许不得转载。

设计模式学习笔记——备忘录(Memento)模式

设计模式学习笔记——备忘录(Memento)模式@(设计模式)[设计模式, 备忘录模式, memento]设计模式学习笔记备忘录Memento模式 基本介绍 备忘录案例 类图 实现代码 Memento...
  • q547550831
  • q547550831
  • 2017年04月13日 10:44
  • 602

PHP设计模式——备忘录模式

声明:本系列博客参考资料《大话设计模式》,作者程杰。                 备忘录模式又叫做快照模式或Token模式,在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之...
  • jhq0113
  • jhq0113
  • 2015年06月10日 10:26
  • 1741

浅谈JAVA设计模式之——备忘录模式(Memento)

一、概述 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 二、适用性 1.必须保存一个对象在某一个时刻的(部分)状态,这样以后需...
  • l1028386804
  • l1028386804
  • 2015年05月09日 13:02
  • 1348

23种设计模式之---备忘录模式

前言网上搜索备忘录设计模式,基本上均是在一个GoF,基础上衍生下来的。为了避免重复造轮子,这里会结合网上demo,和自己理解进行总结定义:备忘录(Memento)模式又称标记(Token)模式。GOF...
  • o279642707
  • o279642707
  • 2017年03月07日 16:14
  • 610

设计模式----Memento(备忘录)模式

设计模式----Memento(备忘录)模式 GoF:在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。 Memento模式是用一个...
  • lenhan12345
  • lenhan12345
  • 2006年12月22日 15:58
  • 709

设计模式之Memento(备忘录)

Memento备望录模式定义:memento是一个保存另外一个对象内部状态拷贝的对象.这样以后就可以将该对象恢复到原先保存的状态.Memento模式相对也比较好理解,我们看下列代码:public cl...
  • iseelxj
  • iseelxj
  • 2008年03月21日 15:57
  • 236

设计模式----Memento(备忘录)

作用:   在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢复到原先保存的状态.   UML结构图:   解析:   Memento模...
  • weiqubo
  • weiqubo
  • 2010年02月07日 00:12
  • 941

Memento(备忘录)设计模式

一、概念        在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 二、模式结构图...
  • Sharing_Li
  • Sharing_Li
  • 2015年12月09日 11:48
  • 355

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

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

设计模式学习-Memento(备忘录)

意图:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。一个备忘录(Memento)是一个对象,它存储另一个对象在某个瞬间的内部状态...
  • valetine
  • valetine
  • 2011年05月15日 22:45
  • 275
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式读书笔记:Memento(备忘录)
举报原因:
原因补充:

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