设计模式C++版:第十八式备忘录模式
2017-08-25 08:39
211 查看
备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在外部保存为以后恢复之前状态,存储信息。
缺点如果数据较多,需要储存的节点也多的话,将会消耗大量内存。不过这也不是什么特别大的问题,如今个人计算机配置很少有低于8G或者16G内存的,而消耗大于8G或16G以上内存的程序相对来说还是比较少的。服务器就更可以随意配置了。
设计模式写到这里估计大家也发现了,很多设计模式长得特别像,其实还是刚开始说的那样,一个编程高手到了一定地步后都会遗忘或淡忘掉这些所谓的设计模式的,或者说这些设计模式已经到了根据实际需要信手拈来,而忘记其名称的境界。
缺点如果数据较多,需要储存的节点也多的话,将会消耗大量内存。不过这也不是什么特别大的问题,如今个人计算机配置很少有低于8G或者16G内存的,而消耗大于8G或16G以上内存的程序相对来说还是比较少的。服务器就更可以随意配置了。
#include <stdio.h> #include<vector> using std::vector; //数据块 class StateMemento { public: StateMemento(int v, int a, int d) :vit(v), atk(a), def(d) { } public: int vit; int atk; int def; }; //游戏角色 class GameRole { public: GameRole(int a, int b, int c) :vit(a), atk(b), def(c) { } StateMemento *savestate() { return (new StateMemento(vit, atk, def)); } void recoverystate(StateMemento* state) { this->vit = state->vit; this->atk = state->atk; this->def = state->def; } void displaystate() { printf("生命力%d\n",vit); printf("攻击力%d\n",atk); printf("防御力%d\n",def); } void fight() { vit -= 10; atk -= 10; def -= 10; } private: int vit; int atk; int def; }; //角色管理 class RoleManager { public: void memsave(StateMemento* state) { m_vector.push_back(state); } StateMemento* memget() { return m_vector[m_vector.size()-1]; } ~RoleManager() { do { delete m_vector[m_vector.size()-1]; m_vector.pop_back(); } while (!m_vector.empty()); } private: vector<StateMemento*> m_vector; }; int main() { GameRole *lxy = new GameRole(100,90,110); lxy->displaystate(); RoleManager *manger = new RoleManager; manger->memsave(lxy->savestate()); lxy->fight(); lxy->displaystate(); printf("--------恢复各项指标-----------\n" ); lxy->recoverystate(manger->memget()); lxy->displaystate(); return 0; }
设计模式写到这里估计大家也发现了,很多设计模式长得特别像,其实还是刚开始说的那样,一个编程高手到了一定地步后都会遗忘或淡忘掉这些所谓的设计模式的,或者说这些设计模式已经到了根据实际需要信手拈来,而忘记其名称的境界。
相关文章推荐
- (Boolan)C++设计模式 <十> ——状态模式(State)和备忘录(Memento)
- 设计模式观后(c++还原之二十一 备忘录模式)
- C++设计模式之二十一--Mediator中介者模式、Interpreter解释器模式、Flyweight享元模式、Memento备忘录模式
- C++设计模式浅识备忘录模式
- 设计模式中的备忘录模式解析及相关C++实例应用
- C++设计模式——备忘录模式
- c++ 23种设计模式之备忘录模式
- 设计模式C++实现(12)——备忘录模式
- 设计模式C++实现(12)——备忘录模式
- c++的设计模式之备忘录模式
- C++与设计模式(12)——备忘录模式
- c++设计模式之备忘录模式
- c++设计模式之备忘录模式
- 设计模式C++描述----17.备忘录(Memento)模式
- 设计模式C++实现--备忘录模式
- 设计模式C++实现(12)——备忘录模式
- 设计模式C++实现(12)——备忘录模式
- c++设计模式--备忘录模式
- 程序设计模式(十六) C++ 备忘录( Memento)模式
- C++设计模式之备忘录模式