C++ 设计模式之备忘录模式
设计模式之备忘录模式
备忘录,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。该模式很好理解,其UML图如下:
在Originator中提供了创建Memento的接口,具体要保存什么样的内容,则根据需求来定。而Caretaker则是负责管理Memento。而保存的内容的具体的组织方式什么的都封装在Memento中了。这样做耦合性很低,方便维护和扩展。示例代码如下:
1 // MemoModel.h文件 2 #pragma once 3 #include <iostream> 4 #include <string> 5 6 class Memo; 7 8 class Originator 9 18 void setState(std::string str) 19 22 void recoverState(Memo * p); 23 }; 24 25 class Memo 26 33 34 }; 35 36 Memo * Originator::createMemo() 37 40 41 void Originator::recoverState(Memo * p) 42 45 46 class Caretaker 47 52 ~Caretaker() 53 57 Memo * getMemo() 58 61 void setMemo(Memo * p) 62 65 };测试代码如下:
1 #include <iostream> 2 #include "MemoModel.h" 3 4 int main() 5测试结果如下图:
备忘录模式把要保存的细节封装在了Memo类中,如果要修改保存细节的话,不会影响到客户端。备忘录模式比较适用于功能比较复杂的,但需要维护或记录属性历史的类,或者需要保存的属性只是众多属性中的一小部分时。
上一篇:C++ 设计模式之组合模式
下一篇:C++ 设计模式之建造者模式
C/C++
pla文件怎么看,pla文件用什么打开?
pl1文件怎么看,pl1文件用什么打开?
pl文件怎么看,pl文件用什么打开?
pl0文件怎么看,pl0文件用什么打开?
pkt文件怎么看,pkt文件用什么打开?
pkm文件怎么看,pkm文件用什么打开?
pks文件怎么看,pks文件用什么打开?
pka文件怎么看,pka文件用什么打开?
pkh文件怎么看,pkh文件用什么打开?
pkg文件怎么看,pkg文件用什么打开?