设计模式-备忘录模式

来源:互联网 发布:怎么给淘宝商家打电话 编辑:程序博客网 时间:2024/06/05 15:23

适用情境:在一个对象外部记录其状态,在对象状态改变后提供恢复以前状态的功能.

这里写图片描述

// device.h#ifndef DEVICE_H#define DEVICE_H#include "memo.h"class Device{public:    Device();    Memo* CreateMemo();    void Recover(Memo* memo);    void Show();public:    int m_state_code;};#endif // DEVICE_H
//device.cpp#include "device.h"#include <iostream>Device::Device(){}Memo* Device::CreateMemo(){    return new Memo(m_state_code);}void Device::Recover(Memo *memo){    m_state_code = memo->m_state_code_bak;}void Device::Show(){    std::cout << m_state_code << std::endl;}
// memo.h#ifndef MEMO_H#define MEMO_Hclass Memo{public:    Memo(int state_code);    int m_state_code_bak;};#endif // MEMO_H
// memo.cpp#include "memo.h"Memo::Memo(int state_code){    m_state_code_bak = state_code;}
// caretaker.h#ifndef CARETAKER_H#define CARETAKER_H#include "memo.h"class Caretaker{public:    Caretaker();    Memo* m_memo;};#endif // CARETAKER_H
// caretaker.cpp#include "caretaker.h"Caretaker::Caretaker(){}

客户端:

// main.cpp#include <iostream>#include "memo.h"#include "caretaker.h"#include "device.h"using namespace std;int main(int argc, char *argv[]){    Device *dev = new Device();    dev->m_state_code = 100;    dev->Show();    Caretaker *taker = new Caretaker();    taker->m_memo = dev->CreateMemo();    dev->m_state_code = 222;    dev->Show();    dev->Recover(taker->m_memo);    dev->Show();    return 0;}
0 0
原创粉丝点击