备忘录模式原理:将对象的私有数据存储在其他地方,以便重新加载
代码如下:
#include <iostream> #include <string> #include <vector> using namespace std; class GameRole; class Memeno { public: Memeno(int vitality = 0,int defense = 0,int attack = 0): m_vitality(vitality),m_defense(defense),m_attack(attack){} void show() { cout << "vitality:" << m_vitality << "m_defense:" <<m_defense<<"m_attack:"<<m_attack<<endl; } friend GameRole; private: int m_vitality; int m_defense; int m_attack; }; class GameRole { public: GameRole():m_vitality(100),m_defense(100),m_attack(100){} Memeno Save() { return Memeno(m_vitality,m_defense,m_attack); } void Load(Memeno memeno) { m_vitality = memeno.m_vitality; m_defense = memeno.m_defense; m_attack = memeno.m_attack; } void attack() { m_vitality-=10; m_defense-=10; m_attack-=10; } void show() { cout << "vitality:" << m_vitality << "m_defense:" <<m_defense<<"m_attack:"<<m_attack<<endl; } private: int m_vitality; int m_defense; int m_attack; }; class MemnnoLibary { public: void Save(Memeno memeno) { m_vecMemeno.push_back(memeno); } Memeno Load(int state) { return m_vecMemeno[state]; } private: vector<Memeno> m_vecMemeno; }; int main() { GameRole role; Memeno memenno; MemnnoLibary ml; role.show(); ml.Save(role.Save()); role.attack(); role.show(); role.Load(ml.Load(0)); role.show(); return 0; }