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;
    }
    */

     

     

  • 相关阅读:
    CentOS下安装vsftpd
    Linux下快速删除大量文件
    /var/spool/postfix/maildrop/ 中有大量的文件
    Linux 查看目录大小及文件数量命令
    windows下体验Redis
    hMailServer SSL 配置
    vmware 安装 Mac OS X 10.9 Mavericks
    提问和看不懂
    C 语言学习 第三次作业总结
    C 语言学习 第二次作业总结
  • 原文地址:https://www.cnblogs.com/MrGreen/p/3420527.html
Copyright © 2011-2022 走看看