展开

关键词

首页关键词备忘录模式

备忘录模式

相关内容

  • 设计模式之备忘录模式(Memento模式)引入备忘录模式备忘录模式的实例备忘录模式分析

    引入备忘录模式备忘录模式的实例备忘录模式的分析引入备忘录模式我们在使用文本编辑器的时候,一般如果不小心误操作了,按ctrl+z就可以恢复之前的状态,撤销(undo)操作。备忘录模式主要可以实现一下几个功能:undo撤销redo重做history 历史记录snapshot快照备忘录模式就像在某一个时刻给一个对象实例拍个照片,然后将以后有必要的时候,就可以将实例恢复到当时的状态备忘录模式的实例我们实现一个实例,可以保存实例某个时间点的状态,并且恢复。?备忘录模式分析备忘录模式的角色:Originator生成者 生成者会在保存自己状态的时候,new一个新的menmeto角色 当需要恢复的时候,只需要把以前的menmeto传给生成者,他就会将自己恢复至menmeto备忘录模式的类图?image.png
    来自:
    浏览:150
  • 设计模式~备忘录模式

    备忘录模式(Memento Pattern)又叫做快照模式(Snapshot Pattern)或Token模式,是对象的行为模式。备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捕捉住,并外部化存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。备忘录模式常常和命令模式和迭代器模式一同使用。存储这些快照的备忘录对象叫做此对象的历史;某个快照所处的位置叫做检查点。备忘录角色(Memento)备忘录角色由如下责任:1. 将发起人(Originator)对象的内部状态存储起来。备忘录有两个等效的接口:  窄接口:负责人(Caretaker)对象(和其他除发起人之外的任何对象)看到的是备忘录的窄接口(narrow interface),这个窄接口只允许它把备忘录对象传给其他的对象负责人角色(Caretaker)负责人角色有如下责任:负责保存备忘录对象不检查备忘录对象的内容备忘录模式的白箱实现? 源代码清单:
    来自:
    浏览:164
  • 广告
    关闭

    云产品限时秒杀

    云服务器1核2G首年50元,还有多款热门云产品满足您的上云需求

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到
  • 设计模式-备忘录模式

    背景美国大片好多超级英雄的角色,一个人从头干到尾,还毫发无损,真的是大家很崇拜的对象,而超级英雄平常也是普通人状态,等到世界末日或者说变身的时候才变成超级牛逼的一种状态,干完架又恢复成普通人,这里其实跟备忘录模式有点像备忘录模式是什么?备忘录模式(Memento Pattern),属于行为模式,定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便恢复到原先保存的状态。Caretaker(备忘录管理员角色):负责管理备忘录,只负责将备忘录内容进行传递;备忘录模式可以干嘛?该模式主要用于恢复和保存对象的状态或对象。优点:遵循迪米特法则:由于角色的备份信息由备忘录管理员角色,只负责管理,而不能直接去修改备忘录的信息,并且该备忘录最终操作也由发起人来决定是否恢复。备忘录模式类图?
    来自:
    浏览:159
  • 设计模式之备忘录模式

    定义备忘录模式(Momento Pattern):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。又叫快照模式。备忘录模式是一个比较简单的模式,用于备份对象状态。通常可以与命令模式等一起使用。角色备忘录模式有三个角色:备忘录(Memento)角色,发起人(Originator)角色,负责人(Caretaker)角色。?模式说明我们结合命令模式来说明备忘录模式,依然使用浏览器的返回场景来说明。,可以方便实现一些功能,如命令模式的 undo备忘录模式是实现检查点(check point)的一种方法缺点在备份对象过多时,会占用很多内存,此时需要与外部存储交互
    来自:
    浏览:169
  • JAVA 设计模式 备忘录模式

    用途备忘录模式 (Memento)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 这样以后就可将该对象恢复到原先保存的状态。备忘录模式是一种行为型模式。结构?图-备忘录模式结构图Memento : 负责存储 Originator 对象的内部状态,并可以防止 Originator 以外的其他对象访问 Memento。Memento 有两个接口,Caretaker 只能看到备忘录的窄接口,它只能将备忘录传递给其他对象。 Originator 可以看到一个宽接口,允许它访问返回到先前状态所需的所有数据。Memento,不能对备忘录的内容进行操作或检查。参考资料《大话设计模式》《HeadFirst设计模式》
    来自:
    浏览:279
  • 设计模式 - 备忘录模式 - JavaScript

    备忘录模式:属于行为模式,保存某个状态,并且在需要的时候直接获取,而不是重复计算。 专注前端与算法的系列干货分享。引用请声明:xxoo521.com | 「公众号:心谭博客」 什么是备忘录模式备忘录模式:属于行为模式,保存某个状态,并且在需要的时候直接获取,而不是重复计算。注意:备忘录模式实现,不能破坏原始封装。不借助备忘录模式,数据一大,就容易爆栈;借助备忘录,算法的时间复杂度可以降低到 O(N) 除此之外,数据的缓存等也是常见应用场景。多语言实现ES6 实现首先模拟了一下简单的拉取分页数据。要考虑的情况是:同一个script标签不能被多次加载对于加载错误,要正确处理对于几乎同时触发加载函数的情况, 应该考虑锁住基于此,main2.js文件编码如下: 备忘录模式: 防止重复加载const loadScripterror.message));}, 5000);在index2.html中引入上述代码,即可查看效果: Documenttitle> head> script> body>html>python3 实现这里实现一下借助“备忘录模式
    来自:
    浏览:247
  • 设计模式 | 备忘录模式及典型应用

    本文的主要内容:介绍备忘录模式示例备忘录模式总结备忘录模式备忘录模式最常见的场景如下所示:浏览器回退:浏览器一般有浏览记录,当我们在一个网页上点击几次链接之后,可在左上角点击左箭头回退到上一次的页面,然后也可以点击右箭头重新回到当前页面数据库备份与还原编辑器撤销备忘录模式(Memento Pattern):在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。在负责人类中可以存储一个或多个备忘录对象,它只负责存储对象,而不能修改对象,也无须知道对象的实现细节。备忘录模式的核心是备忘录类以及用于管理备忘录的负责人类的设计。示例.备忘录模式类图备忘录模式总结备忘录模式的主要优点如下:它提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定的历史步骤,当新的状态无效或者存在问题时,可以使用暂时存储起来的备忘录将状态复原备忘录模式的主要缺点如下:资源消耗过大,如果需要保存的原发器类的成员变量太多,就不可避免需要占用大量的存储空间,每保存一次对象的状态都需要消耗一定的系统资源。
    来自:
    浏览:238
  • 设计模式-备忘录模式

    备忘录模式 备忘录(Memento)模式的定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。该模式又叫快照模式。发起人不需要管理和保存其内部状态的各个备份,所有状态信息都保存在备忘录中,并由管理者进行管理,这符合单一职责原则。2.缺点资源消耗大。3.代码示例3.1 备忘录实体类public class Memento { private String state; public Memento(String state) { this.statevoid setState(String state) { this.state=state; } 获取装填 public String getState() { return state; } 创建备忘录public Memento createMemento() { return new Memento(state); } 设置备忘录 public void restoreMemento(Memento
    来自:
    浏览:175
  • 设计模式之备忘录模式(行为型)

    一、模式定义备忘录模式(Memento Pattern):备忘录模式的定义是在不破坏封装的前提下,捕获一个对象的内部状态,并将该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。所以备忘录模式就是一种对象行为型模式。二、模式角色备忘录模式包括下面角色Originator(原发器)Memento(备忘录)Caretaker(负责人)?备忘录模式包括原发器类,备忘录类和负责人类。原发器可以创建一个备忘录,备忘录类存储原发器类的内部状态,根据原发器来决定保存哪些内部状态,负责人类负责保存备忘录三、模式分析备忘录模式主要应用于备份或者回退操作,为了使软件使用更友好,通常都有回退功能备忘录对象用于存储另外一个对象内部状态的快照对象,所以备忘录模式又可以称之为快照模式(Snapshot Pattern)或Token模式典型代码:原发器类:public class Originator为了使操作过程更加人性化,现使用备忘录模式对系统进行改进,使得用户在进行了错误操作之后可以恢复到操作之前的状态。
    来自:
    浏览:223
  • 行为型模式:备忘录模式

    十一大行为模式之九:备忘录模式。简介姓名 :备忘录模式英文名 :Memento Pattern价值观 :凡事要有备份个人介绍 :Without violating encapsulation,capture and externalize回到今天的主题,今天讲的是备忘录模式,从字面上理解,就是讲备份东西,有了备份就可以恢复。发布这东东也很符合备忘录模式,下面通过模拟发布步骤代码来讲备忘录模式。这里讲的不是上面说的第 1 种,这里围绕着第 3 种发布步骤写,不管哪种发布平台,它们的底层都是一样的。总结备忘录模式定义了一个备份机制。在很多场景都有类似备忘录模式的实现,比如数据库的事务的回滚机制。
    来自:
    浏览:159
  • 备忘录模式

    概念备忘录模式:又叫做快照模式,属于行为模式的一种,指在不破坏封装性的前提下,获取到一个对象的内部状态,并在对象之外记录或保存这个状态。在有需要的时候可将该对象恢复到原先保存的状态。我们相当于把对象原始状备份保留,所以叫备忘录模式。 结构与组成首先看一下备忘录模式的UML图: ?备忘录模式主要包含:发起者对象(Originator)、备忘录(Memento)和管理者角色(Caretaker)三部分组成。System.out.println(机器开始发电:); role.getCurrentState(); 利用备忘录模式保存当前状态 System.out.println(---保存当前的机器状态--、缺点及适用场合优点: 1、备忘录模式可以把发起人内部信息对象屏蔽起来,从而可以保持封装的边界。
    来自:
    浏览:295
  • 设计模式-备忘录模式

    备忘录模式是使用一个备忘录对象把另外一个对象内部状态进行保存,在适当的时候还原到某个状态。如同我们记录某件事件,在需要回忆的时候去看下记事本。先来看下类图?该模式涉及到3个角色:发起人角色:Originator,该角色包含备忘录对象,备忘录对象存储了他的状态;负责人角色:Caretaker,该角色保存备忘录对象,但不检查备忘录对象内容;备忘录角色:Memento,对备忘录对象里面的内容不再变化。System.out.println(宽接口); } public Narrow getConcrete(){ return (Narrow)new ConcreteCLass(); } }}接下来看下黑箱的备忘录模式o.restoreMemento(c.retrieveMemento()); } }**最后结论和之前的一样,但在设计上面已经很不同 *有时候发起人内部信息需要保存在别的地方,但是读取还是发起人自己,此时备忘录模式就可以把发起人信息对外封闭起来
    来自:
    浏览:197
  • Java设计模式(十九)----备忘录模式

    备忘录模式 一、 概念 二、 结构 三、 分类 1.”白箱”备忘录模式的实现 2.“黑箱”备忘录模式的实现 3.这样就可以将该对象恢复到原先保存的状态二、结构 备忘录模式的结构图如下所示 ?   备忘录模式所涉及的角色有三个:备忘录(Memento)角色、发起人(Originator)角色、负责人(Caretaker)角色。备忘录模式可以将发起人对象的状态存储到备忘录对象里面,备忘录模式可以将发起人对象恢复到备忘录对象所存储的某一个检查点上。下面给出一个示意性的、有多重检查点的备忘录模式的实现。?memento); } }结果: 状态改变为:state 0 状态改变为:state 1 状态改变为:state 0 由于“自述历史”作为一个备忘录模式的特殊实现形式非常简单易懂,它可能是备忘录模式最为流行的实现形式
    来自:
    浏览:281
  • 图解Java设计模式之备忘录模式

    2)传统的方式是简单的做备份,new出另外一个对象出来,再把需要备份的数据放到这个新对象,但这就暴露了对象内部的细节备忘录模式基本介绍1)备忘录模式(Memento Pattern)在不破坏封装性的前提下2)可以这里理解备忘录模式 :现实生活中的备忘录是用来记录某些要去做的事情,或者是记录已经达成的共同意见的事情,以防忘记。而在软件层面,备忘录模式有着相同的含义,备忘录对象主要用来记录一个对象某种状态,或者某些数据,当要做回退时,可以从备忘录对象里获取原来的数据进行恢复操作。 3)备忘录模式属于行为型模式。备忘录模式原理类图?5)为了节约内存,备忘录模式可以和原型模式陪着使用。
    来自:
    浏览:218
  • 一起学设计模式 - 备忘录模式

    概述备忘录模式又叫做快照模式(Snapshot Pattern),一个用来存储另外一个对象内部状态的快照的对象。备忘录模式常常与命令模式和迭代子模式一同使用。案例前言:备忘录模式按照备忘录角色的形态不同,分为白箱实现与黑箱实现,两种模式与备忘录角色提供的接口模式有关;引入两个定义,备忘录有两个等效的接口:窄接口:负责人(Caretaker)对象(和其他除发起人对象之外的任何对象这种情况只需要使用 有序队列方式可以很容易达到多重检查点备忘录模式可以将发起人对象的状态存储到备忘录对象里面,备忘录模式可以将发起人对象恢复到备忘录对象所存储的某一个检查点上。因此在使用备忘录模式的时候,一定要好好思考应用的环境,如果使用的代价太高,就不要选用备忘录模式,可以采用其它的替代方案。
    来自:
    浏览:198
  • 设计模式专题(十三) ——备忘录模式

    设计模式专题(十三)——备忘录模式(原创内容,转载请注明来源,谢谢)一、概述 备忘录模式(Memento)是在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以将该对象恢复到原先保存的状态备忘录模式将保存的细节封装在备忘录中,当程序变动需要改动保存细节,也不需要客户端进行改动。该模式适合场景复杂,但是需要维护或记录属性历史的类。另外,备忘录模式可以把保存的数据进行加密,则保证保存的数据完整性。 备忘录模式使用场景较多,如文本编辑的撤销、棋类游戏的悔棋、单机游戏的存档等,都会用到备忘录模式。二、类图?三、具体设计 备忘录模式中有三个角色。 1、发起人Originator,是被保存的类,其可以自定义方式让用户进行保存。另外,需要提供解析已经保存的数据,实现恢复数据的功能。四、实现方式 用PHP实现备忘录模式,可以用到php的内部魔术方法__sleep()和__wakeup。当保存类的时候,通常会用serialize,则__sleep()可以控制序列化哪些内容。
    来自:
    浏览:499
  • 23种设计模式之备忘录模式

    备忘录模式的定义定义: 在不破坏封装性的前提下, 捕获一个对象的内部状态, 并在该对象之外保存这个状态.备忘录角色代码:?备忘录管理员角色代码:?场景类:?备忘录模式的应用备忘录模式的使用场景:需要保存和恢复数据的相关状态场景提供一个可回滚的操作需要监控的副本场景中.例如要监控一个对象的属性, 但是监控又不应该作为系统的主业务来调用, 即使出现监控不准也影响不大, 因此一般做法是备份一个主线程中的对象数据库连接的事务管理就是用的备忘录模式备忘录模式的注意事项:备忘录的生命期不要再频繁建立备份的场景中使用别忘路模式, 原因如下: 一是控制不了备忘录建立的对象数量.二是大对象的建立是要消耗资源的, 系统的性能需要考虑.备忘录模式的扩展1.clone方式的备忘录通过 clone 获取当前对象的副本, 在需要的时候进行还原, 这样就不需要备忘录对象了, 当然也就不需要备忘录管理角色了
    来自:
    浏览:186
  • Java设计模式学习记录-备忘录模式

    前言这次要介绍的是备忘录模式,也是行为模式的一种 。现在人们的智能手机上都会有备忘录这样一个功能,大家也都会用,就是为了记住某件事情,防止以后自己忘记了。那么备忘录模式又是什么样子的呢?是不是和手机上的备忘录一样呢?下面来介绍一下。备忘录模式 概念介绍备忘录模式是指在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。举例我们还是用一个小例子来简单介绍一下备忘录模式,在玩一个步骤游戏时,每走一步时步数都加一,遇到道具可以快速走几步,或者减几步。用备忘录模式的思想来实现这个逻辑,就是如下代码。看完了这个小例子,大概应该知道备忘录模式是个什么逻辑了吧,有点类似咱们平时知道的事务回滚的机制。下面还是分析一下,备忘录模式都是由哪些部分组成的。备忘录模式结构结构图如下?备忘录模式的构成角色如下所示。原发器类(Originator):创建一个备忘录对象,使用备忘录存储它的内部状态。负责人类(CareTaker):负责保存好备忘录对象,不能检查或操作备忘录的内容。
    来自:
    浏览:201
  • 设计模式之备忘录模式

    设计模式之备忘录模式结构?适用条件需要保存对象在某一时刻的状态, 并在以后需要将对象恢复到这个状态; 同时又不希望暴露对象的实现细节, 破坏对象的封装性, 这是需要使用备忘录模式。
    来自:
    浏览:101
  • 通俗易懂设计模式解析——备忘录模式

    前言  今天我们来看看备忘录模式【MementoPattern】,我们平时写文档的时候一不小心写错了一些字或者删除了一些东西怎么办呢?我们记得之前讲过一个命令模式。命令保存的是发起人的具体命令(对应的行为)、我们今天讲的这个备忘录跟这个有点相似,但是备忘录模式保存的是发起人的状态(对应的数据结构、如属性)。使用场景及优缺点一、使用场景1、需要保存恢复数据的场景可以使用备忘录模式。2、可提供回滚操作的场景可使用备忘录模式、例如Ctrl+Z。二、优点1、给用户提供了一个恢复机制,可以回退到某个历史状态。总结  到这里我们就介绍完了备忘录模式。备忘录模式将对象的状态数据进行储存,保存在备忘录角色中。然后通过管理员角色进行管理。可以将对象回退到历史某一时刻的状态数据。备忘录模式保存的是对象的状态数据。命令模式保存的是对象发起的命令也就是行为。备忘录模式是对行为状态的操作、命令模式是对行为序列的操作。
    来自:
    浏览:150

扫码关注云+社区

领取腾讯云代金券