C++实现备忘录模式

/*
	备忘录模式:在不破坏一个对象的封装性的前提下,获取一个对象的内部状态,并将其保存在对象之外,
	使得对象可以恢复到原先保存的状态。
	Created by Phoenix_FuliMa
*/

#include 
#include 
using namespace std;

class Memento
{
private:
	string state;

public:
	Memento(string state)
		:state(state)
	{}
	string GetState()
	{
		return state;
	}
	void SetState(string state)
	{
		this->state = state;
	}
};

class CareTaker
{
private:
	Memento *memento;

public:
	void SetMemento(Memento *memento)
	{
		this->memento = memento;
	}
	Memento* GetMemento()
	{
		return this->memento;
	}
};

class Originator
{
private:
	string state;
	
public:
	Originator(string state)
	{
		this->state = state;
	}

	void RestoreMemento(Memento *memento)
	{
		state = memento->GetState();
	}

	Memento *CreateMemento()
	{
		return new Memento(state);
	}

	void SetState(string state)
	{
		this->state = state;
	}

	void  ShowState()
	{
		cout<< this->state <SetMemento(originator->CreateMemento());
	
	cout<<"2012年11月11日,光棍节早晨的状态是:"<ShowState();

	originator->SetState("中午参加同学婚礼去了,锦府盐帮饭店");
	originator->ShowState();

	cout<<"晚上回来的状态是"<RestoreMemento(caretaker->GetMemento());
	originator->ShowState();

	cout<<"跟早晨一样,嗨"<
C++实现备忘录模式_第1张图片

你可能感兴趣的:(设计模式)