//// Created by andrew on 2020年11月28日.//#include <iostream>using namespace std;// Caretaker 管理者// Memento 备忘录class Memento{public:Memento(string name, int age){m_name = name;m_age = age;}string getName(){return m_name;}int getAge() const{return m_age;}void setName(string name){this->m_name = name;}void setAge(int age){this->m_age = age;}private:string m_name;int m_age;};class Person{public:Person(string name, int age){m_name = name;m_age = age;}string getName(){return m_name;}int getAge() const{return m_age;}void setName(string name){this->m_name = name;}void setAge(int age){m_age = age;}// 保存,将需要的信息记录到Memento中// 原生者 创建一个备忘录,用于保存信息Memento *createMemento(){return new Memento(m_name, m_age);}//还原void setMemento(Memento *memento){this->m_name = memento->getName();this->m_age = memento->getAge();}void printT(){cout << "m_name:" << m_name << "m_age:" << m_age << endl;}private:string m_name;int m_age;};class Caretaker{public:explicit Caretaker(Memento * memento){this->memento = memento;}Memento *getMemento(){return memento;}void setMemento(Memento *memento){this->memento = memento;}private:Memento *memento;};int main(int argc, char* argv[]){Caretaker *caretaker = nullptr;auto *p = new Person("bob", 32);p->printT();cout << "----------------------" << endl;caretaker = new Caretaker(p->createMemento());p->setAge(42);p->printT();cout << "ro back" << endl;p->setMemento(caretaker->getMemento());p->printT();cout << "memento pattern" << endl;}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。