送货至:

 

 

实践GoF的23种设计模式:备忘录模式

 

2023-11-25 13:56:42

晨欣小编

备忘录模式(Memento Pattern)是一种行为设计模式,它允许在不暴露对象实现细节的情况下捕获和恢复对象的内部状态。备忘录模式通常涉及三个主要角色:发起人(Originator)、备忘录(Memento)、管理者(Caretaker)。

以下是备忘录模式的实践过程,以便更好地理解:

  1. 发起人(Originator):

    • 发起人是持有状态的对象,需要在不破坏封装的情况下保存和恢复其状态。

    • 发起人需要创建备忘录对象,将当前状态保存到备忘录中,并能够从备忘录中恢复状态。

  2. 备忘录(Memento):

    • 备忘录是用于存储发起人对象状态的对象。

    • 备忘录通常提供一些接口,允许发起人访问其状态的一部分或全部,并且不会暴露发起人内部的具体实现细节。

  3. 管理者(Caretaker):

    • 管理者负责保存和管理备忘录对象。

    • 管理者通常不直接操作备忘录中的状态,而是在需要时将备忘录交还给发起人,或者将备忘录存储在某个历史记录中。

下面是一个简单的备忘录模式的示例,使用 Go 语言:

goCopy codepackage mainimport "fmt"// 备忘录type Memento struct {
    State string}// 发起人type Originator struct {
    State string}func (o *Originator) CreateMemento() *Memento {    return &Memento{State: o.State}
}func (o *Originator) RestoreMemento(m *Memento) {
    o.State = m.State
}// 管理者type Caretaker struct {
    MementoList []*Memento
}func (c *Caretaker) AddMemento(m *Memento) {
    c.MementoList = append(c.MementoList, m)
}func (c *Caretaker) GetMemento(index int) *Memento {    return c.MementoList[index]
}func main() {
    originator := &Originator{State: "State1"}
    caretaker := &Caretaker{}    // 保存状态
    memento1 := originator.CreateMemento()
    caretaker.AddMemento(memento1)    // 修改状态
    originator.State = "State2"

    // 再次保存状态
    memento2 := originator.CreateMemento()
    caretaker.AddMemento(memento2)    // 恢复到第一个状态
    originator.RestoreMemento(caretaker.GetMemento(0))

    fmt.Println("Current State:", originator.State)
}

这个示例演示了备忘录模式的基本实现。发起人对象(Originator)可以创建备忘录,并在需要时恢复状态。管理者对象(Caretaker)负责存储和管理备忘录。备忘录对象(Memento)用于保存状态。


 

上一篇: 全局路径规划RRT算法原理
下一篇: 详析开关电源中的电感电流测量

热点资讯 - 元器件应用

 

如何看懂电路图?新手入门全指南
电子工程师必学的基础电路设计原则
电源电路全解析:开关电源与线性电源区别
电池充电电路设计:恒流与恒压控制原理
电桥为什么精度很高?电桥能测量什么?
什么是电极电势,电极电势的知识介绍
晶振不起振难题破解:聚焦并联电阻与负载电容
深度剖析高能效 AC - DC LED 通用照明方案及应用
收起 展开
QQ客服
我的专属客服
工作时间

周一至周六:09:00-12:00

13:30-18:30

投诉电话:0755-82566015

微信客服

扫一扫,加我微信

0 优惠券 0 购物车 BOM配单 我的询价 TOP