在不破坏对象的封装性的前提下,在对象之外捕获并保存该对象内部状态以便日后对象使用或者对象恢复到以前的某个状态。

// Page备忘录类
var Page = function() {// 信息缓存对象var cache = {};return function(page, fn) {// 判断该页数据是否在缓存中if(cache[page]) {// 显示该页内容
      showPage(page, cache[page]);// 执行成功回调函数fn && fn();} else {// 否则异步请求$.post('./data/getNewsData.php', {page: page}, function(res) {// 成功返回if(res.errNo == 0) {showPage(page, res.data);cache[page] = res.data;fn && fn();} else {// 处理异常
        }})}}
}

上面代码可以看出Page缓存器内部缓存了每次请求回来的新闻数据,这样以后如果用户想回看某页新闻数据就不需要发送不必要的请求了。
备忘录模式最主要的任务是对现有的数据或状态进行缓存,为将类某个时刻使用或恢复做准备。但是当数据量过大时,会严重占用系统提供的资源,此时对缓存器的优化是很有必要的,复用率低的数据缓存下来是不值得的。

转载于:https://www.cnblogs.com/camille666/p/design_pattern_behavior_memento.html

设计模式之行为型备忘录模式相关推荐

  1. 设计模式学习笔记--Memento 备忘录模式

    在软件的构建过程中,某些对象的状态在转换过程中,可能由于某种需要,要求程序能够回溯到对象之前某个点时的状态,如果使用一些公有接口来让其他对象得到对象的状态,便会暴露对象的细节实现.      如何实现 ...

  2. [设计模式-行为型]备忘录模式(Memento)

    一句话 让某个对象可以取到之前的某个状态值. 概括 解析 MEMENTO-同时跟几个MM聊天时,一定要记清楚刚才跟MM说了些什么话,不然MM发现了会不高兴的哦,幸亏我有个备忘录,刚才与哪个MM说了什么 ...

  3. 设计模式——行为型——备忘录模式

    一.理论 Without violating encapsulation,capture and externalize an object's internal state so that the ...

  4. 设计模式学习笔记:备忘录模式(Memento)

    文章目录 一.备忘录模式简介 二.适应场景 三.示例演示 四.测试示例 拥有乐观的心态很重要,它能让工作和生活更加美好. 一.备忘录模式简介 备忘录模式是设计模式中行为型模式的一种.备忘录模式用于保存 ...

  5. Java进阶篇设计模式之十二 ---- 备忘录模式和状态模式

    前言 在上一篇中我们学习了行为型模式的策略模式(Strategy Pattern)和模板模式(Template Pattern).本篇则来学习下行为型模式的两个模式,备忘录模式(Memento Pat ...

  6. 设计模式——(19)备忘录模式

    1.定义 在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态.它是一种对象行为型模式,其别名为Token. 备忘录模式的核心是备忘录类以 ...

  7. 设计模式:行为型-模板模式

    目录 第一章 模板模式介绍 第二章 模板模式实现 2.1.抽象父类 2.2.具体子类 2.3.测试类 第三章 模板模式应用 项目地址:https://gitee.com/caochenlei/desi ...

  8. 【设计模式与Android】备忘录模式——在齐太史简

    什么是备忘录模式 所谓备忘录模式,就是在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以后可将这个对象恢复到原先保存的状态的设计模式. 备忘录模式的实现方式   备忘录模式的 ...

  9. 设计模式【17】——备忘录模式(Memento 模式)

    文章目录 前言 一.备忘录模式(Memento 模式) 二.具体源码 1.Memento.h 2.Subject.cpp 3.main.cpp 三.运行结果 总结 前言 备忘录模式用于保存和恢复对象的 ...

  10. 设计模式之创建型——工厂模式(3种)

    →23种设计模式大纲 三种工厂模式 →23种设计模式大纲 定义 分类 1)简单工厂 UML类图 2)工厂方法 UML类图 3)抽象工厂 UML类图 总结 定义 将创建对象这一复杂的过程交由工厂控制,通 ...

最新文章

  1. fir.im Weekly - iOS 保持界面流畅的技巧
  2. 如何用过滤器过滤HTTP协议和非HTTP协议编码
  3. ipad iphone开发_如何将iPhone或iPad置于恢复模式
  4. 手把手教你搭建开发环境之Java开发
  5. 详测 Generics Collections TStack(1): Push、Pop、Peek - 其他功能同 TQueue
  6. iOS通知的整理笔记
  7. 系统学习深度学习(二十三)--SqueezeNet
  8. VS Code快捷生成用户代码片段操作,以vue为例
  9. 国家多部委发布13份“十四五”规划,115项重大工程​
  10. 游戏常用数据分析指标汇总
  11. 如何在Macbook上装windows
  12. C# 打开和关闭软键盘
  13. 设计圈都这么卷的吗!看霜降海报哪家强
  14. 详解 n 维向量、n 维数组 和 矩阵的维度(转载)
  15. xilinxFPGA-VGA时序+代码实现详解
  16. 论玩镜头的三种境界[转自无忌fruitbear]
  17. openofdm中complex_to_mag的分析
  18. GEE哨兵二号去云不成功的原因(代码修改)
  19. MySql技术内 幕:InnoDB存储引擎 读书笔记
  20. 字节跳动笔试题(一)——18岁生日问题

热门文章

  1. mysql 参数化分页_LR12 DataWizard从Mysql数据取参数化数据
  2. sas python接口_全方位比较3种数据科学工具:Python、R和SAS(附链接)
  3. linux jdk环境变量配置不生效_Linux服务器JDK环境变量配置
  4. [渝粤教育] 西南科技大学 单片机原理与应用 在线考试复习资料(1)
  5. 【渝粤题库】陕西师范大学200561 英语写作(一) 作业
  6. 【渝粤教育】广东开放大学 学前儿童保育学 形成性考核 (40)
  7. 【Python实例第28讲】核主成分
  8. 一个简单的倒计时js插件
  9. Metasploit工具的使用
  10. 001-开发环境及其基本常识