备忘录模式
【1】什么是备忘录模式?
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。
这样就可以将该对象恢复到原先保存的状态。
【2】备忘录模式的代码示例:
代码示例如下:

1 #include <iostream>
2 #include <string>
3 #include <vector>
4 using namespace std;
5
6 class Memo
7 {
8 public:
9 string state;
10 Memo(string state)
11 {
12 this->state = state;
13 }
14 };
15
16 class Originator
17 {
18 public:
19 string state;
20 void setMemo(Memo *memo)
21 {
22 state = memo->state;
23 }
24 Memo *createMemo()
25 {
26 return new Memo(state);
27 }
28 void show()
29 {
30 cout << state << endl;
31 }
32 };
33
34 class Caretaker
35 {
36 public:
37 vector<Memo *> memo;
38 public:
39 void save(Memo *memo)
40 {
41 (this->memo).push_back(memo);
42 }
43 Memo *getState(int i)
44 {
45 return memo[i];
46 }
47 };
48
49 int main()
50 {
51 Originator *og = new Originator();
52 Caretaker *ct = new Caretaker();
53
54 og->state = "on";
55 og->show();
56 ct->save(og->createMemo());
57
58 og->state = "off";
59 og->show();
60 ct->save(og->createMemo());
61
62 og->state = "middle";
63 og->show();
64 ct->save(og->createMemo());
65
66 og->setMemo( ct->getState(1) );
67 og->show();
68
69 return 0;
70 }
71 //Result:
72 /*
73 on
74 off
75 middle
76 off
77 */
Good Good Study, Day Day Up.
顺序 选择 循环 总结
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异