前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大话设计模式09-备忘录模式-2020-9-24

大话设计模式09-备忘录模式-2020-9-24

作者头像
用户7719114
发布2022-02-22 13:24:56
2290
发布2022-02-22 13:24:56
举报
文章被收录于专栏:C++小白

1.备忘录模式简介

备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态,这样以后就可以将对象恢复到原先保存的状态。UML类图如下:

在这里插入图片描述
在这里插入图片描述

Originator将内部状态保存到Memento中,memento通过caretaker进行管理。

2.备忘录实现

将游戏打boss前的状态保存下来,战斗结果不理想时进行恢复。UML类图如下:

在这里插入图片描述
在这里插入图片描述

c++ 代码实现如下:

代码语言:javascript
复制
#include<exception>
#include <iostream>
#include<string>
using namespace std;
//9.备忘录模式:打游戏进度保存

class PlayerMemonto
{
public:
	PlayerMemonto(int ilife=0, int iattack=0, int idef=0) :m_life(ilife), m_attack(iattack), m_def(idef){};
	int getLife(){ return m_life; }
	int getAttack(){ return m_attack; }
	int getDef(){ return m_def; }
private:
	int m_life;
	int m_attack;
	int m_def;
};

class GamePlayer
{
public:
	GamePlayer():m_life(100),m_attack(100),m_def(100){}
	PlayerMemonto createMemonto()
	{
		return PlayerMemonto(m_life, m_attack, m_def);
	}
	void recover(PlayerMemonto iMemonto)
	{
		m_life = iMemonto.getLife();
		m_attack = iMemonto.getAttack();
		m_def = iMemonto.getDef();
	}
	void fight()
	{
		m_life = 13;
		m_attack = 23;
		m_def = 9;
	}
	void show()
	{
		cout << "life:" << m_life << " attack:" << m_attack << " def:" << m_def << endl;
	}
private:
	int m_life;
	int m_attack;
	int m_def;
};

class PlayerMemontoManeger
{
public:
	void setMemonto(PlayerMemonto iMemonto)
	{
		m_memonto = iMemonto;
	}
	PlayerMemonto getMemonto(){ return m_memonto; }
private:
	PlayerMemonto m_memonto;
};


int main()
{
	GamePlayer player;
	player.show();
	PlayerMemonto memonto = player.createMemonto();
	PlayerMemontoManeger maneger;
	maneger.setMemonto(memonto);
	player.fight();
	player.show();
	player.recover(maneger.getMemonto());
	player.show();
	system("pause");
}

3.总结

不知道为啥还需要一个管理者类,留给以后的自己思考吧。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.备忘录模式简介
  • 2.备忘录实现
  • 3.总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档