zoukankan      html  css  js  c++  java
  • 设计模式 之 《备忘录模式》

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

    适用于功能比较复杂的,但需要记录或维护属性历史的类或者需要保存的属性只是众多属性中的一小部分时Originator可以根据保存的Memo还原到前一状态。

     

     

    #ifndef __MEMO_MODEL__
    #define __MEMO_MODEL__
    
    #include <iostream>
    #include <string>
    using namespace std;
    /*
    GOOD:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以将以后的对象状态恢复到先前保存的状态。
    适用于功能比较复杂的,但需要记录或维护属性历史的类;或者需要保存的属性只是众多属性中的一小部分时Originator可以根据保存的Memo还原到前一状态。
    */
    class Memo;
    
    //发起人类
    class Originator
    {
    public:
        string state;
        Memo* createMemo();
        void setMemo(Memo* memo);
        void show(){ cout<<"状态:"<<endl; }
    };
    
    //备忘录类
    class Memo
    {
    public:
        string state;
        Memo(string strState){ state = strState; }
    };
    
    Memo* Originator::createMemo()
    {
        return new Memo(state);
    }
    
    void Originator::setMemo(Memo* memo)
    {
        state = memo->state;
    }
    
    //管理者类
    class Caretaker
    {
    public:
        Memo* memo;
    };
    
    #endif //__MEMO_MODEL__
    
    /*
    #include "MemoModel.h"
    int _tmain(int argc, _TCHAR* argv[])
    {
    Originator* on = new Originator();
    on->state = "on";
    on->show();
    
    Caretaker* c = new Caretaker();
    c->memo = on->createMemo();
    
    on->state = "off";
    on->show();
    
    on->setMemo(c->memo);
    on->show();
    
    return 0;
    }
    */

     

     

  • 相关阅读:
    nginx 部署
    win 7 系统ie浏览器升级11版本后,f12功能不可用的问题
    selenium 调用键盘按键
    selenium + python 环境搭建
    解决word2013老是打开未响应情况
    win7 64位备份时, 无法启动服务,0x80070422
    个人学习网站收集
    矩形后旋转后顶点坐标的求解
    Acrobat_8_Pro_SC 激活老是提示你输入的授权码无效
    DLL用def定义文件来导出重载函数(转)
  • 原文地址:https://www.cnblogs.com/MrGreen/p/3420527.html
Copyright © 2011-2022 走看看