1.备忘录模式

简介: 1备忘录模式的核心内容是: A:包含一个存储记录的结构(C++中用类这种结构来存储) B:包含产生记录的类。 C:使用一种数据结构来存储操作的记录。 2备忘录模式的作用是回放所做的操作 3备忘录模式具体描述 备忘录模式:备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。 备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捉住,

1备忘录模式的核心内容是:

A:包含一个存储记录的结构(C++中用类这种结构来存储)

B:包含产生记录的类。

C:使用一种数据结构来存储操作的记录。

2备忘录模式的作用是回放所做的操作

3备忘录模式具体描述

备忘录模式:备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。

备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捉住,

并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。

 

同时跟几个MM聊天时,一定要记清楚刚才跟MM说了些什么话

不然MM发现了会不高兴的哦,幸亏我有个备忘录,

刚才与哪个MM说了什么话我都拷贝一份放到备忘录里面保存,

这样可以随时察看以前的记录啦。

 

设计需要回放的软件,记录一下事物的状态。数据库备份,文档的编译,撤销,恢复

 

设计备忘录三大步骤

A设计记录的节点,存储记录,//记录鼠标,键盘的状态

B设计记录的存储,vector,listmap,set,链表,图,数组,树

C操作记录的类,记录节点状态,设置节点状态,显示状态,0.1秒记录一下

4.备忘录模式类图

5.代码:

#include <iostream>

#include <string>

#include <vector>

using namespace std;

//备忘录模式:备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。

//备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捉住,

//并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。

 

//同时跟几个MM聊天时,一定要记清楚刚才跟MM说了些什么话

//,不然MM发现了会不高兴的哦,幸亏我有个备忘录,

//刚才与哪个MM说了什么话我都拷贝一份放到备忘录里面保存,

//这样可以随时察看以前的记录啦。

 

//设计需要回放的软件,记录一下事物的状态。数据库备份,文档的编译,撤销,恢复

 

//设计备忘录三大步骤

//1.设计记录的节点,存储记录,//记录鼠标,键盘的状态

//2.设计记录的存储,vector,listmap,set,链表,图,数组,树

//3.操作记录的类,记录节点状态,设置节点状态,显示状态,0.1秒记录一下

 

//备忘录的节点,下面是记录的节点,存储记录信息

//类作为存储结构

class Memo

{

public:

    string state;

    Memo(string state) //记录当前的状态

    {

        this->state = state;

    }

};

 

//类的包含备忘录的节点,Originator:表示的是发起人,起源,起因

//作为操作类

class Originator

{

public:

    string state;

    void setMemo(Memo *memo)

    {

        state = memo->state;

    }

    Memo *createMemo()

    {

        return new Memo(state);

    }

    void show()

    {

        cout << state << endl;

    }

};

 

//备忘录的集合,作为存储结构

class Caretaker

{

public:

    vector<Memo *> memo;

    void save(Memo *memo)

    {

        (this->memo).push_back(memo);

    }

    Memo *getState(int i)

    {

        return memo[i];

    }

};

 

int main()

{

    //操作类

    Originator *og = new Originator();

    //存储结构

    Caretaker *ct = new Caretaker();

 

    og->state = "on";

    og->show();

    ct->save(og->createMemo());

 

    og->state = "off";

    og->show();

    ct->save(og->createMemo());

 

    og->state = "middle";

    og->show();

    ct->save(og->createMemo());

 

    og->setMemo(ct->getState(1));

    og->show();

 

    og->setMemo(ct->getState(2));

    og->show();

    cin.get();

    return 0;

}

运行结果:


目录
相关文章
|
2月前
|
缓存 NoSQL Java
《API网关性能优化指南:从请求拥堵到毫秒级响应,并发下的架构重构实践》
本文聚焦企业级微服务API网关高并发性能优化实践,针对Spring Cloud Gateway在服务扩容后出现的请求拥堵、路由匹配延迟、限流失效、日志阻塞等问题,提出“分层过滤路由+异步化处理+分布式限流”的架构重构方案。通过将路由规则按“服务分组-路径前缀-请求方法”三层拆解,结合Caffeine缓存优化检索效率;将鉴权、日志等耗时操作异步化,释放Netty线程资源;采用“Redis+Lua脚本+本地缓存”实现集群级精准限流,并解决规则冲突、线程安全、网络延迟等落地难题。
142 3
|
11月前
|
算法 Java C++
【潜意识Java】蓝桥杯算法有关的动态规划求解背包问题
本文介绍了经典的0/1背包问题及其动态规划解法。
339 5
|
12月前
|
数据可视化 搜索推荐 API
速卖通获得aliexpress商品详情API接口的开发、应用与收益。
速卖通(AliExpress)作为阿里巴巴旗下的跨境电商平台,为全球消费者提供丰富商品。其开放平台提供的API接口支持开发者获取商品详情等信息,本文探讨了速卖通商品详情API的开发流程、应用场景及潜在收益,包括提高运营效率、降低成本、增加收入和提升竞争力等方面。
355 1
|
12月前
|
机器学习/深度学习 人工智能 API
【AI系统】推理引擎示例:AscendCL
AscendCL 是华为 Ascend 系列 AI 处理器的软件开发框架,提供强大的编程支持,简化 AI 应用的开发和优化。本文介绍了 AscendCL 的概念、优势、应用场景及基本开发流程,帮助开发者高效利用昇腾 AI 处理器的计算资源。
251 2
|
12月前
|
数据可视化 BI 项目管理
团队任务不再掉链子!一款工具搞定分配与进度追踪
在快节奏的工作环境中,任务管理常面临分配不明确、进度追踪难、信息沟通不畅等问题,严重影响团队效率和项目进度。板栗看板作为一款高效的协同办公软件,通过可视化的任务看板、实时进度追踪、支持多人协作及丰富的模板库,有效解决了这些管理难题,提升了团队协作效率和项目管理能力,特别适用于中小型企业及个人用户。
224 2
|
机器学习/深度学习 人工智能 自然语言处理
AI技术在医疗领域的应用与前景####
本文探讨了人工智能(AI)在医疗领域的多方面应用,包括疾病诊断、个性化治疗、患者管理以及药物研发等。通过对现有技术的梳理和未来趋势的展望,旨在揭示AI如何推动医疗行业的变革,并提升医疗服务的质量和效率。 ####
289 5
|
机器学习/深度学习 运维 监控
智能化运维:未来数据中心的守护者
【6月更文挑战第11天】在数字化浪潮不断推进的今天,数据中心作为企业信息架构的核心,其稳定性和高效性对企业运营至关重要。本文将探讨智能化运维如何通过先进的技术手段,实现对数据中心的实时监控、自动化管理与故障预防,从而确保企业IT基础设施的高可用性和性能优化。
|
存储 JavaScript 前端开发
用js获取当前月份的天数
原文:用js获取当前月份的天数 在获取每月天数的时候,一般都是存储到一个数组中进行获取,但是如果是二月份的话就需要首先判断是否闰年,再确定是28还是29了。 js可以通过Date对象很方便的获取到每月的天数,在初始化Date对象时,我们可以通过这种方式 var d = new Date(2017,2,0); console.log(d.getDate()); 以上代码可以在控制台输出2015年2月份的天数 Date对象月份从0开始,即0表示1月份,以此类推。
3885 0
|
机器学习/深度学习 数据采集 搜索推荐
技术解读 | 智能开放搜索CTR预估模型
本文介绍开放搜索CTR预估模型在个性化排序中的应用与实践
2607 2
|
程序员 API 开发工具
Hug | 下一代高性能Api开发工具
Hug | 下一代高性能Api开发工具
444 0