(三)行为模式:6、备忘录模式(Memento Pattern)(C++示例)

这篇具有很好参考价值的文章主要介绍了(三)行为模式:6、备忘录模式(Memento Pattern)(C++示例)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1、备忘录模式(Memento Pattern)含义

2、备忘录模式的UML图学习

3、备忘录模式的应用场景

4、备忘录模式的优缺点

(1)优点:

(2)缺点

5、C++实现备忘录模式的实例


1、备忘录模式(Memento Pattern)含义

备忘录(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。【DP】

备忘录模式(Memento Pattern)是一种行为型设计模式,用于在不破坏封装性的前提下捕获和存储一个对象的内部状态,并在需要时恢复该状态。它将对象的状态保存到备忘录对象中,然后可以通过备忘录对象来还原对象的状态。

2、备忘录模式的UML图学习

(三)行为模式:6、备忘录模式(Memento Pattern)(C++示例),设计模式,备忘录模式,设计模式,c++

 备忘录模式的主要角色包括:

(1)Originator(发起人):负责创建一个备忘录对象,用于记录当前对象的内部状态,并可以使用备忘录对象来恢复其状态。

(2)Memento(备忘录):用于存储Originator对象的内部状态。

(3)Caretaker(管理者):负责保存备忘录对象,但不能对备忘录对象进行修改或检查。

3、备忘录模式的应用场景

(1)需要保存和恢复对象的历史状态。

(2)需要提供撤销操作或者回滚操作的系统。

(3)需要对对象的状态进行快照并进行比较的系统。

4、备忘录模式的优缺点

(1)优点:

        1)提供了一种可靠的方式来保存和恢复对象的状态,避免了直接暴露对象的内部细节。

        2)备忘录对象与原始对象解耦,使得原始对象可以专注于业务逻辑,而不必关心状态的保存和恢复。

        3)可以灵活地扩展备忘录对象的功能,例如支持多个历史状态的保存和恢复。

(2)缺点

        1)如果原始对象的状态较大或者频繁改变,会占用较大的内存空间。

        2)在保存和恢复状态时,需要进行对象的序列化和反序列化操作,可能会影响性能。

5、C++实现备忘录模式的实例


#include <iostream>
#include <string>

// 备忘录类
class Memento {
public:
    Memento(const std::string& state) : state_(state) {}

    std::string getState() const {
        return state_;
    }

private:
    std::string state_;
};

// 发起人类
class Originator {
public:
    void setState(const std::string& state) {
        state_ = state;
    }

    std::string getState() const {
        return state_;
    }

    Memento createMemento() {
        return Memento(state_);
    }

    void restoreMemento(const Memento& memento) {
        state_ = memento.getState();
    }

private:
    std::string state_;
};

// 管理者类
class Caretaker {
public:
    void saveMemento(const Memento& memento) {
        memento_ = memento;
    }

    Memento retrieveMemento() const {
        return memento_;
    }

private:
    Memento memento_;
};

int main() 
{
    Originator originator;
    Caretaker caretaker;

    // 设置初始状态
    originator.setState("State 1");
    std::cout << "Current state: " << originator.getState() << std::endl;

    // 保存状态
    caretaker.saveMemento(originator.createMemento());

    // 修改状态
    originator.setState("State 2");
    std::cout << "Current state: " << originator.getState() << std::endl;

    // 恢复状态
    originator.restoreMemento(caretaker.retrieveMemento());
    std::cout << "Restored state: " << originator.getState() << std::endl;

    return 0;
}

在上述示例中,Originator类表示发起人,Caretaker类表示管理者,Memento类表示备忘录。通过调用createMemento方法可以创建一个备忘录对象,并通过restoreMemento方法来恢复对象的状态。文章来源地址https://www.toymoban.com/news/detail-683374.html

到了这里,关于(三)行为模式:6、备忘录模式(Memento Pattern)(C++示例)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【设计模式——学习笔记】23种设计模式——备忘录模式Memento(原理讲解+应用场景介绍+案例介绍+Java代码实现)

    游戏角色有攻击力和防御力,在大战Boss前保存自身的状态(攻击力和防御力),当大战Boss后攻击力和防御力下降,可以从备忘录对象恢复到大战前的状态 针对每一种角色,设计一个类来存储该角色的状态 【分析】 一个对象,就对应一个保存对象状态的对象, 这样当我们游戏

    2024年02月13日
    浏览(57)
  • 行为型模式-备忘录模式

    描述 通过封装一个对象的状态,并将其保存在外部,从而实现了该对象状态的备份和恢复。这种方式可以提高代码的灵活性和可维护性,同时也能够减少代码对于状态存储的依赖。 适用环境 当需要保存和恢复对象的状态时使用;当直接访问对象的成员变量或方法不利于代码

    2023年04月10日
    浏览(44)
  • 设计模式行为型——备忘录模式

    目录 备忘录模式的定义 备忘录模式的实现 备忘录模式角色 备忘录模式类图 备忘录模式举例 备忘录模式代码实现 备忘录模式的特点 优点 缺点 使用场景 注意事项 实际应用         备忘录模式(Memento Pattern)又叫做快照模式(Snapshot Pattern)或Token模式(Token Pattern),属

    2024年02月14日
    浏览(58)
  • 设计模式(4)--对象行为(6)--备忘录

    1. 意图     在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。     这样以后可以将该对象恢复到原先保存的状态。 2. 三种角色    原发器(Originator)、备忘录(Memento)、负责人(Caretaker) 3. 优点    3.1 保持了封装边界。屏蔽了原发器的内部信息。

    2024年02月04日
    浏览(41)
  • 笨蛋学设计模式行为型模式-备忘录模式【22】

    8.9.1概念 ​ 备忘录模式允许在不暴露对象实现细节的情况下捕获和恢复对象的内部状态。通过将对象的状态封装在备忘录对象中,并将备忘录对象保存在一个管理者对象中,可以在需要时回滚到对象之前的状态。 8.9.2场景 ​ 在现代办公场景中,备忘录模式可以应用于文档编

    2024年01月25日
    浏览(41)
  • Java设计模式之行为型-备忘录模式(UML类图+案例分析)

    目录 一、基础概念 二、UML类图 三、角色设计 四、案例分析 五、总结  备忘录模式是一种行为型设计模式,它允许保存一个对象的内部状态到一个备忘录对象中,这样就可以在需要的时候恢复这个对象的状态了,同时又不违反封装性原则。 这个模式的核心就是备忘录对象,

    2024年02月16日
    浏览(38)
  • C++ 设计模式之备忘录模式

    【声明】本题目来源于卡码网(题目页面 (kamacoder.com)) 【提示:如果不想看文字介绍,可以直接跳转到C++编码部分】         -- 什么是备忘录模式  (第17种模式)          备忘录模式 (Memento Pattern)是⼀种 ⾏为型设计模式 ,它允许在不暴露对象实现的情况下捕获对

    2024年01月20日
    浏览(50)
  • 【设计模式】备忘录模式

    主页传送门: 💁 传送        备忘录(Memento Pattern)模式又叫做快照模式(Snapshot Pattern)或Token模式,是对象的行为模式。。其定义如下: Without violating encapsulation,capture and externalize an object’s internal state so that the object can be restored to this state later.        即:在不破坏封

    2024年02月07日
    浏览(57)
  • 设计模式-备忘录模式

    备忘录模式(Memento Pattern)是计算机科学中的一种行为设计模式。它提供了一种在不破坏封装性的前提下,捕获和恢复对象内部状态的方法。这种模式主要用于在用户需要回滚到对象的某个先前状态时,能够实现状态的还原。 在备忘录模式中,主要涉及到三个角色: Origina

    2024年01月23日
    浏览(49)
  • 设计模式——备忘录模式

    备忘录模式(Memento Pattern)是一种行为型设计模式,它在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样可以在需要时将对象恢复到先前的状态。 发起人(Originator): 是拥有复杂内部状态的对象,它可以创建和恢复备忘录。 备忘录(M

    2024年01月19日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包