往事不堪回首,月如钩。寂寞梧桐深院锁清秋。春花秋月何时了,往事知多少?小楼昨夜又东风,故人不堪回首,月明中。 我记性不好,所以很多事情都要做备忘录,像一些回忆、照片、日常聊天、物件,虽然知道那些时光是回不去了,但是以前还是希望能回得去的。 这个备忘录有个什么优点呢?它有时间戳啊,想回到哪天就回到哪天。它还增删自由啊,当然,改是不允许改了,为了保证回忆的纯净。 我的好兄弟啊钒,总是说我放不下,其实也没啥放不下的,前两周不就放下了嘛,我把以前相关的备忘录全删了,也是该开始新的生活了,一直困在过去,画地为牢,有什么意思呢? 生活如此,程序也是如此,备忘录模式是一个很常用的模式,或者说,备忘录的功能是很多人都需要实现的,也有些人想实现却不知道怎么实现,嫌麻烦。不然我上一篇备忘录,也不至于就那么点访问量有那么高量。 来,我教你实现备忘录。首先要有几个什么元素呢? 来张图吧,看的直观。 这是一段防爬虫文字,读者可跳过 如果要加多个备忘录,可以在管理者类中放上容器,自己实现。 在不破坏封装性的前提下,获取一个对象的状态,并将这个状态保存在类外,这样以后就可以恢复这个状态。 备忘录的生命周期,要主动管理它的生命周期,不使用就删了。文章目录
春花秋月何时了,往事知多少?
首先你要有想存的东西,这不是废话嘛,这个东西要支持存储;其次你得有个容器,也就是管理者(比方说U盘),实现了存、取、查、删等该实现的功能,我的U盘还支持加密呢;最后,就是执行存取操作的人,这个人,他学问也不少,比方说这个U盘啊,是不是加密,是不是只有你一个人能访问是吧,那就又涉及到密保了。
本文为ImapBox作者“看,未来”原创,我的ImapBox地址为 https://lion-wu.blog.csdn.net/
本篇隶属于我的专栏 – 《设计模式 之 设计模式进阶》https://blog.csdn.net/qq_43762191/category_10059121.html
作者版权,未经允许,禁止转载。
————————————————
版权声明:本文为ImapBox博主「看,未来」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43762191/article/details/106547130代码实现
#include<iostring> #include<string> //以此替代结构体,结构体要自己定义 using namespace std; //备忘录 class Memento{ private: string State;//状态,建议使用结构体存储 public: Memento(string value){State = value;} string get_State(return State;); } //发起人 class Originator{ private: string State; //状态,建议使用结构体存储 public: string get_state(){return State;} void set_state(string value){State = value;} Memento Create_Memento(){return (new Memento(State));} //创建备忘录,将当前需要的信息导入并实例化出一个Memento对象 void set_memento(Memento *memento){State = memento->get_State();} //恢复备忘录 void show(){cout<<State<<endl;} //显示数据 }; //管理者类 class Caretaker{ private: Memento *memento; public: Memento get_Memento(){return memento;} //得到备忘录 } //主函数 int main() { Originator *o = new Originator(); o->set_state("A"); o->show(); Caretaker *c = new Caretaker(); c->memento = o.Create_Memento();//保存状态。有管理类挡在前面,很好的隐藏了备忘录类的实现细节 o->set_state("B"); //更改状态 o->show(); o->set_memento(c->memento); //恢复状态,解释同上 o->show(); }
感悟
被上面那个类中类搞晕了,哈哈哈,难搞啊。备忘录模式之使用场景
使用场景
注意事项
备忘录的性能:不要在频繁建立备份的场景中使用备忘录模式,因为控制不了备忘录建立的数量。
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算