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&#x2B;&#x2B;
Copyright © 2002-2019 k262电脑网 www.k262.cn 皖ICP备2020016292号
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!QQ:251442993 热门搜索 网站地图