当前位置:网站首页>The memorandum model of behavior model
The memorandum model of behavior model
2020-11-06 21:35:00 【Irving the procedural ape】
Catalog
- Definition and characteristics
- Structure and Implementation
- The structure of the pattern
- The realization of pattern
- Application scenarios
- Expand : Mixed with prototype patterns
Everyone makes mistakes sometimes , I hope there is a kind of “ Regret ” Make up for your own mistakes , Let yourself start over , But the reality is brutal . In computer applications , Customers also make mistakes often , Can you provide “ Regret ” Give it to them ? Of course you can , And it's necessary . This function consists of “ Memo mode ” To achieve .
In fact, many applications provide this function , Such as Word、 Notepad 、Photoshop、Eclipse Wait for the software to press when editing Ctrl+Z Key combination can undo the current operation , Restore the document to its previous state ; And in IE Back key in 、 Rollback operation in database transaction management 、 Save intermediate results when playing games 、 Database and operating system backup operation 、 The repentance function in chess games belongs to this kind of game .
Memo mode can record the internal state of an object , When the user regrets, the current operation can be undone , Restore data to its original state .
Definition and characteristics
Memorandum (Memento) Pattern The definition of : Without breaking encapsulation , Capture the internal state of an object , And save the state outside the object , So that the object can be restored to the original saved state when needed later , This mode is also called snapshot mode .
Memo mode is an object behavior pattern , Its main advantages are as follows :
- Provides a mechanism for restoring state : When the user needs to be able to more easily restore the data to a historical state .
- Realize the encapsulation of internal state : In addition to the founders who created it , No other object can access this state information .
- Simplified the originator : Initiators do not need to manage and save individual backups of their internal state , All status information is stored in the memo , And managed by the manager , This is in line with the principle of single responsibility .
Its main drawback is : High resource consumption , If the internal state information to be saved is too much or too frequent , It will occupy a large amount of memory resources .
Structure and Implementation
The core of the memo pattern is to design the memo class and the manager class for managing the memo , Now let's learn about its structure and implementation .
The structure of the pattern
The main roles of the memo model are as follows :
- Originator (Originator) role : Record the internal status information of the current time , Provides the ability to create and recover memo data , Implement other business functions , It has access to all the information in the memo .
- Memorandum (Memento) role : Responsible for storing the internal state of the initiator , Provide these internal states to the originator when needed .
- managers (Caretaker) role : Manage memos , Provides the ability to save and retrieve memos , But it cannot access and modify the contents of the memorandum .
The structure of the memo mode is shown in the figure :

The realization of pattern
The implementation code of memo mode is as follows :
class Program{ static void Main(string[] args) { Originator or = new Originator(); Caretaker cr = new Caretaker(); or.SetState("S0"); Console.WriteLine(" The initial state :" + or.GetState()); cr.SetMemento(or.CreateMemento()); // Save state or.SetState("S1"); Console.WriteLine(" New status :" + or.GetState()); or.RestoreMemento(cr.GetMemento()); // Restore the state Console.WriteLine(" Restore the state :" + or.GetState()); Console.Read(); }}// Memorandum public class Memento{ private String state; public Memento(String state) { this.state=s.........
版权声明
本文为[Irving the procedural ape]所创,转载请带上原文链接,感谢
边栏推荐
- C and C / C + + mixed programming series 5 - GC collaboration of memory management
- DC-1 target
- 2020-08-14:数据任务的执行引擎用的哪些?
- An article will take you to understand SVG gradient knowledge
- The legality of IPFs / filecoin: protecting personal privacy from disclosure
- 谷歌浏览器实现视频播放加速功能
- The method of realizing high SLO on large scale kubernetes cluster
- Using iceberg on kubernetes to create a new generation of cloud original data Lake
- From overseas to China, rancher wants to do research on container cloud market
- 磁存储芯片STT-MRAM的特点
猜你喜欢

How does cglib implement multiple agents?

Git rebase is in trouble. What to do? Waiting line

IPFs rudder filecoin landing at the same time, fil currency price broke a thousand

Junit测试出现 empty test suite

An article will take you to understand CSS alignment

2020-08-17:详细说下数据倾斜怎么解决?

事务的本质和死锁的原理

2020-08-19:TCP是通过什么机制保障可靠性的?

Summary of front-end interview questions (C, s, s) that front-end engineers need to understand (2)

Using an example to understand the underlying processing mechanism of JS function
随机推荐
面试官: ShardingSphere 学一下吧
NAND FLASH的接口控制设计
Take you to learn the new methods in Es5
jenkins安装部署过程简记
超高频RFID医疗血液管理系统应用
统计项目代码行数
Kubernetes and OAM to build a unified, standardized application management platform knowledge! (Internet disk link attached)
2020-08-20:GO语言中的协程与Python中的协程的区别?
Application insights application insights use application maps to build request link views
Multi robot market share solution
window系统 本机查找端口号占用方法
ORA-02292: 违反完整约束条件 (MIDBJDEV2.SYS_C0020757) - 已找到子记录
Novice guidance and event management system in game development
2020-08-15:什么情况下数据任务需要优化?
Markdown tricks
How to play sortable JS vuedraggable to realize nested drag function of forms
An article takes you to understand CSS pagination examples
Interviewer: how about shardingsphere
How to start the hidden preferences in coda 2 on the terminal?
ERD-ONLINE 免费在线数据库建模工具