代码实现:
#include <iostream>
#include <string>
using namespace std;
class PersonMemento
{
public:
PersonMemento(string name, int age)
{
this->name = name;
this->age = age;
}
void setName(string name)
{
this->name = name;
}
string getName()
{
return this->name;
}
void setAge(int age)
{
this->age = age;
}
int getAge()
{
return age;
private :}
};string name;
int age;
class Person
{
public :Person(string name, int age)
{
this->name = name;
this->age = age;
}
void setName(string name)
{
this->name = name;
}
string getName()
{
return this->name;
}
void setAge(int age)
{
this->age = age;
}
int getAge()
{
return age;
}
public:
PersonMemento* createPersonMemento()
{
return new PersonMemento(name, age);
}
void setPersonMemento(PersonMemento* memento)
{
this->setName(memento->getName());
this->setAge(memento->getAge());
}
void print()
{
cout << "name: " << name << ", age: " << age << endl;
}
private:
string name;
int age;
};
class Caretaker
{
public :Caretaker(PersonMemento* memento)
{
this->memento = memento;
}
void setPersonMemento(PersonMemento* memento)
{
this->memento = memento;
}
PersonMemento* getPersonMemento()
{
return memento;
}
private:
PersonMemento* memento;
};
void main()
{
Person* person = new Person("james", 33);
person->print();
Caretaker* caretaker = new Caretaker(person->createPersonMemento());
person->setAge(40);
person->print();
person->setPersonMemento(caretaker->getPersonMemento());
person->print();
delete person;
delete caretaker;
}