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

     

     

  • 相关阅读:
    sql server 行转列
    java 加密解密WORD文档
    数据库重新连接存储
    MSSQL 删除索引
    WORD添加批注(JAVA)
    JAVA添加WORD文档批注
    MYECLIPSE说明书
    K3二次开发后台表
    css css预处理器
    javascript 视频播放指定的时间段
  • 原文地址:https://www.cnblogs.com/MrGreen/p/3420527.html
Copyright © 2011-2022 走看看