设计模式-备忘录模式
来源:互联网 发布:怎么给淘宝商家打电话 编辑:程序博客网 时间: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
- 设计模式-----备忘录模式
- 设计模式 备忘录模式
- 【设计模式】备忘录模式
- 设计模式 - 备忘录模式
- 设计模式:备忘录模式
- 设计模式 - 备忘录模式
- 设计模式 - 备忘录模式
- 设计模式 - 备忘录模式
- 设计模式:备忘录模式
- 【设计模式】备忘录模式
- 设计模式-备忘录模式
- 设计模式--备忘录模式
- 设计模式--备忘录模式
- 设计模式--备忘录模式
- 设计模式-备忘录模式
- 设计模式-备忘录模式
- 【设计模式】备忘录模式
- 设计模式-备忘录模式
- Python菜鸟--异常处理
- Java 泛型
- 交换两个变量的值 不使用第三个变量
- java的深复制和浅复制
- 时间转换1
- 设计模式-备忘录模式
- C 二维数组统计不同整数
- 基础算法之希尔排序
- ios tableview自适应
- 开发者所需要知道的 iOS 10 SDK 新特性
- hdu4506 小明系列故事――师兄帮帮忙(快速幂)
- python的全局变量应用
- [BZOJ1568][JSOI2008]Blue Mary开公司(超哥线段树)
- spi协议,工作原理分析