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

     

     

  • 相关阅读:
    Spring AOP 随记
    Java设计模式系列 — 构造器模式
    【Java线程安全】 — 常用数据结构及原理(未完结)
    【最佳实践】好用的Quartz管理器类
    Timer和时间调度
    Java9之HashMap与ConcurrentHashMap
    记一次maven的包冲突经历
    hbase高可用集群部署(cdh)
    HBase 1.2.6 完全分布式集群安装部署详细过程
    hadoop-2.7.3完全分布式部署
  • 原文地址:https://www.cnblogs.com/MrGreen/p/3420527.html
Copyright © 2011-2022 走看看