C++ 18备忘录模式

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

备忘录模式结构图:


Originator类,负责闯将一个备忘录Memento,用以记录当前时刻它的内部状态,并可使用备忘录回复内部状态。

MeMento类,负责存储Originator对象的内部状态,并可防止Originator以外的其他对象访问备忘录Memento。

Caretaker类,负责保存好备忘录Memento。

案例:游戏进度备忘录


详细代码:

/*
*备忘录模式
*/
#include<iostream>
#include<string>
#include<vector>

using namespace std;

class RoleStateMemento;
//RoleStateOriginator
class GameRoleOriginator
{
private:
	int vit = 100;//生命力,默认角色状态都为100
	int atk = 100;//攻击力
	int def = 100;//防御力
public:
	void GetState()//获得游戏角色的状态
	{
		cout << "游戏角色的当前状态:" << endl;
		cout << "生命力:" << vit << endl;
		cout << "攻击力:" << atk << endl;
		cout << "防御力:" << def << endl;

	}

	void Fight()//每战斗一次,各个值减少20
	{
		if (vit >= 20)
		{
			vit -= 20;
			atk -= 20;
			def -= 20;
		}
		else
			cout << "状态消耗殆尽,GameOver!" << endl;
	}

	RoleStateMemento* SaveState();//保存当前状态
	void RecoveryState(RoleStateMemento *memo);//恢复当前状态
};

//RoleStateMemento类
class RoleStateMemento
{
public:
    int vit;//生命力
	int atk;//攻击力
	int def;//防御力
	RoleStateMemento(int vit, int atk, int def) :
		vit(vit), atk(atk), def(def)
	{}
};

//RoleStateCaretaker类
class RoleStateCaretaker
{
public:
	vector < RoleStateMemento* > memento;
	void Save(RoleStateMemento* mem)//保存角色状态
	{
		memento.push_back(mem);
	}

	RoleStateMemento* GetRoleState(int i)//获得角色状态
	{
		return memento[i];
	}
};

RoleStateMemento* GameRoleOriginator::SaveState()//保存当前状态
{
	return(new RoleStateMemento(vit, atk, def));
}

void GameRoleOriginator::RecoveryState(RoleStateMemento *memo)//恢复当前状态
{
	vit = memo->vit;
	atk = memo->atk;
	def = memo->def;
}

int main()
{
	//大战boss前
	GameRoleOriginator *lixiaoyao = new GameRoleOriginator();
	lixiaoyao->GetState();

	lixiaoyao->Fight();
	lixiaoyao->GetState();
	
	RoleStateCaretaker rs;
	rs.Save(lixiaoyao->SaveState());//保存当前状态 各为80

	lixiaoyao->Fight();
	rs.Save(lixiaoyao->SaveState());//保存当前状态 各为60

	lixiaoyao->Fight();
	lixiaoyao->Fight();
	lixiaoyao->Fight();//经过5轮厮杀,三项指标全为0
	lixiaoyao->GetState();

	//恢复第一次保存的状态
	RoleStateMemento *roleState=rs.GetRoleState(0);
	lixiaoyao->RecoveryState(roleState);
	lixiaoyao->GetState();

	return 0;
}
运行结构如下:



内容概要:本文深入探讨了金属氢化物(MH)储氢系统在燃料电池汽车中的应用,通过建立吸收/释放氢气的动态模型和热交换模型,结合实验测试分析了不同反应条件下的性能表现。研究表明,低温环境有利于氢气吸收,高温则促进氢气释放;提高氢气流速和降低储氢材料体积分数能提升系统效率。论文还详细介绍了换热系统结构、动态性能数学模型、吸放氢特性仿真分析、热交换系统优化设计、系统控制策略优化以及工程验证与误差分析。此外,通过三维动态建模、换热结构对比分析、系统级性能优化等手段,进一步验证了金属氢化物储氢系统的关键性能特征,并提出了具体的优化设计方案。 适用人群:从事氢能技术研发的科研人员、工程师及相关领域的研究生。 使用场景及目标:①为储氢罐热管理设计提供理论依据;②推动车载储氢技术的发展;③为金属氢化物储氢系统的工程应用提供量化依据;④优化储氢系统的操作参数和结构设计。 其他说明:该研究不仅通过建模仿真全面验证了论文实验结论,还提出了具体的操作参数优化建议,如吸氢阶段维持25-30°C,氢气流速0.012g/s;放氢阶段快速升温至70-75°C,水速18-20g/min。同时,文章还强调了安全考虑,如最高工作压力限制在5bar以下,温度传感器冗余设计等。未来的研究方向包括多尺度建模、新型换热结构和智能控制等方面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值