备忘录模式和策略模式
1、备忘录模式
成都创新互联公司专注于企业营销型网站、网站重做改版、桑日网站定制设计、自适应品牌网站建设、H5响应式网站、商城网站开发、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为桑日等各大城市提供网站开发制作服务。
保存对象的状态,在需要的时候在恢复出来即可!!!
2、具体实现
(1)、代码实现
#include#include using namespace std; class Mem{ //备忘录类 public: Mem(string name, int age){ m_name = name; m_age = age; } string getName(){ return m_name; } int getAge(){ return m_age; } void setName(string name){ m_name = name; } void setAge(int age){ 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(){ return m_age; } void setName(string name){ m_name = name; } void setAge(int age){ m_age = age; } //保存 Mem *createMem(){ return new Mem(m_name, m_age); } //还原 void setMem(Mem *mem){ this->m_age = mem->getAge(); this->m_name = mem->getName(); } void printT(){ cout<<"m_name: "< m = m; } Mem *getMem(){ return m; } void setMem(Mem *m){ this->m = m; } private: Mem *m; //持有一个备忘录的引用!!! }; int main(void){ /* Mem *m = NULL; Person *p = new Person("张三",32); p->printT(); //创建Person对象的一个状态 cout<<"---------------------------"< createMem(); p->setAge(42); p->printT(); cout<<"还原旧的状态"< setMem(m); p->printT(); delete p; */ Manager *m1; Person *p = new Person("张三",32); p->printT(); //创建Person对象的一个状态 cout<<"---------------------------"< createMem()); p->setAge(42); p->printT(); cout<<"还原旧的状态"< setMem(m1->getMem()); p->printT(); delete p; return 0; }
(2)、结果如下
3、策略模式
准备一组算法,并将每一个算法封装起来,使得它们可以互换;
4、具体实现
(1)、代码如下
#includeusing namespace std; //策略模式:准备一组算法,并将每一个算法封装起来,使得它们可以互换; class Strategy{ public: virtual void crypt() = 0; private: }; class AES : public Strategy{ public: virtual void crypt(){ cout<<"AES加密算法"< strategy = strategy; } void myoperator(){ strategy->crypt(); } private: Strategy *strategy; }; int main(void){ //1、直接调用的方法; /* DES *des = new DES; des->crypt(); delete des; */ //2、客户端可以自由的进行策略的更换; //Strategy *des = new DES; Strategy *des = new AES; Context *context = new Context; context->setStrategy(des); context->myoperator(); delete des; delete context; return 0; }
(2)、运行结果
本文标题:备忘录模式和策略模式
转载来源:http://abwzjs.com/article/joesie.html