zoukankan      html  css  js  c++  java
  • 备忘录模式

    1】什么是备忘录模式?
    
    在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。
    
    这样就可以将该对象恢复到原先保存的状态。
    
    【2】备忘录模式的代码示例:
    
    代码示例如下:
    #include <iostream>
    #include <string>
    #include <vector>
    using namespace std;
    
    class Memo
    {
    public:
        string state;
        Memo(string state)
        {
            this->state = state;
        }
    };
    
    class Originator
    {
    public:
        string state;
        void setMemo(Memo *memo)
        {
            state = memo->state;
        }
        Memo *createMemo()
        {
            return new Memo(state);
        }
        void show()
        {
            cout << state << endl;
        }
    };    
    
    class Caretaker
    {
    public:
        vector<Memo *> memo;
    public:
        void save(Memo *memo)
        {
            (this->memo).push_back(memo);
        }
        Memo *getState(int i)
        {
            return memo[i];
        }
    };
     
    int main()
    {
        Originator *og = new Originator();
        Caretaker *ct = new Caretaker(); 
    
        og->state = "on";
        og->show();    
        ct->save(og->createMemo());
    
        og->state = "off";
        og->show();
        ct->save(og->createMemo());
    
        og->state = "middle";
        og->show();
        ct->save(og->createMemo());
    
        og->setMemo( ct->getState(1) );
        og->show();
    
        return 0;
    }
    //Result:
    /*
    on
    off
    middle
    off
    */

    http://www.cnblogs.com/Braveliu/p/3946865.html

  • 相关阅读:
    第3章 C++ I/O流技术
    第2章 C++模板技术
    第1章 C++编程技术
    第0章 目录
    判断鼠标移入移出方向设置
    获取数组最小值
    jquery里的宽度详解
    trigger,triggerhandler模拟事件
    表单验证 不能为负值或者字母
    arguments的用法
  • 原文地址:https://www.cnblogs.com/leijiangtao/p/4534589.html
Copyright © 2011-2022 走看看