Golang设计模式——10备忘录模式

简介: Golang设计模式——10备忘录模式

备忘录模式

定义

保存一个对象的某个状态,以便在适当的时候恢复对象。

优点

  1. 给用户提供了一种可以恢复状态的机制,可以使用户能够比较方便地回到某个历史的状态。
  2. 实现了信息的封装,使得用户不需要关心状态的保存细节。

缺点

  1. 消耗资源。如果类的成员变量过多,势必会占用比较大的资源,而且每一次保存都会消耗一定的内存。

场景

  1. 浏览器回退:浏览器一般有浏览记录,当我们在一个网页上点击几次链接之后,可在左上角点击左箭头回退到上一次的页面,然后也可以点击右箭头重新回到当前页面
  2. 数据库备份与还原:一般的数据库都支持备份与还原操作,备份即将当前已有的数据或者记录保留,还原即将已经保留的数据恢复到对应的表中
  3. 编辑器撤销与重做:在编辑器上编辑文字,写错时可以按快捷键 Ctrl + z 撤销,撤销后可以按 Ctrl + y 重做
  4. 虚拟机生成快照与恢复:虚拟机可以生成一个快照,当虚拟机发生错误时可以恢复到快照的样子

代码

package Memento
type Memento struct {
  state int
}
func NewMemento(value int) *Memento {
  return &Memento{value}
}
type Number struct {
  value int
}
func NewNumber(value int) *Number {
  return &Number{value}
}
func (n *Number) Double() {
  n.value = 2 * n.value
}
func (n *Number) Half() {
  n.value = n.value / 2
}
func (n *Number) Value() int {
  return n.value
}
func (n *Number) CreateMemento() *Memento {
  return NewMemento(n.value)
}
func (n *Number) ReinstateMemento(memento *Memento) {
  n.value = memento.state
}
package Memento
import (
  "fmt"
  "testing"
)
func TestNumber_ReinstateMemento(t *testing.T) {
  n := NewNumber(7)
  n.Double()
  n.Double()
  memento := n.CreateMemento()
  n.Half()
  n.ReinstateMemento(memento)
  fmt.Println(n.value)
}

其他设计模式

设计模式Git源代码

00简单工厂模式

01工厂方法模式

02抽象工厂模式

03外观模式

04建造者模式

05桥接模式

06命令模式

07迭代器模式

08模板模式

09访问者模式

10备忘录模式

11责任链模式

12中介模式

13原型模式

14状态模式

15策略模式

16享元模式

17组合模式

18解释器模式

19单例模式

20适配器模式

21代理模式

22装饰器模式

23观察者模式


目录
相关文章
|
1月前
|
设计模式 存储 Java
【设计模式】备忘录模式
【设计模式】备忘录模式
|
2月前
|
设计模式 存储 Java
浅谈设计模式 - 备忘录模式(十五)
浅谈设计模式 - 备忘录模式(十五)
33 0
|
4月前
|
设计模式 存储 Java
Java设计模式【十九】:备忘录模式
Java设计模式【十九】:备忘录模式
26 0
|
6月前
|
设计模式 存储 Java
【设计模式——学习笔记】23种设计模式——备忘录模式Memento(原理讲解+应用场景介绍+案例介绍+Java代码实现)
【设计模式——学习笔记】23种设计模式——备忘录模式Memento(原理讲解+应用场景介绍+案例介绍+Java代码实现)
55 0
|
11天前
|
存储 设计模式 安全
探索设计模式的魅力:备忘录模式揭秘-实现时光回溯、一键还原、后悔药、历史的守护者和穿越时空隧道
备忘录模式是一种行为设计模式,允许在不破坏对象封装性的情况下保存和恢复对象的内部状态。该模式通过创建备忘录对象来存储发起人的状态信息,发起人可根据需要创建和恢复备忘录。管理者则负责保存和管理备忘录,但无法访问其内容。备忘录模式简化了状态管理,支持撤销操作和历史记录功能,提高了系统的灵活性和可用性。在实际应用中,备忘录模式常用于文本编辑器、游戏和数据库事务处理等场景,确保对象状态的安全恢复和有效管理。通过备忘录模式,开发人员可以更好地控制对象状态的变化,提升软件系统的健壮性和用户体验。
29 1
探索设计模式的魅力:备忘录模式揭秘-实现时光回溯、一键还原、后悔药、历史的守护者和穿越时空隧道
|
3月前
|
设计模式 存储 Java
聊聊Java设计模式-备忘录模式
备忘录模式(Memento Design Pattern),也叫快照(Snapshot)模式。指在不违背封装原则前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便之后恢复对象为先前的状态。
38 0
聊聊Java设计模式-备忘录模式
|
3月前
|
设计模式 存储 前端开发
【设计模式】之备忘录模式
备忘录模式是一种有用的设计模式,在前端开发中可以应用于保存和恢复用户界面状态、实现撤销和重做功能等场景。通过封装对象状态并提供恢复机制,备忘录模式提高了代码灵活性和可维护性。然而,在使用备忘录模式时需要注意内存占用和代码复杂度等问题。
43 0
|
4月前
|
设计模式 存储
二十三种设计模式全面解析-深入探究备忘录模式:保留过去,预见未来
二十三种设计模式全面解析-深入探究备忘录模式:保留过去,预见未来
|
6月前
|
设计模式 存储 数据库
行为型设计模式05-备忘录模式
行为型设计模式05-备忘录模式
30 0
|
6月前
|
设计模式 存储 C++
设计模式之备忘录模式(C++)
设计模式之备忘录模式(C++)