备忘录模式 电玩女神 2022-08-19 15:10 184阅读 0赞 今天无意间看到了备忘录模式,由于之前没有接触过,出于好奇,研究了一下,简单来说就是把当前状态记录下来,作为备份,用于意外情况发生恢复用的,有点类似于回退的意思。 备忘录设计模式,总共分为三个角色: 发起人:要备份的成员,将自身的属性信息进行备份,恢复自身的属性信息等 备忘录:存储发起人要备份的属性信息 管理者:管理备忘录对象 下面以表单信息为样例进行演示: 首先是发起人类: /** * 发起者 * */ public class TableInfo { /**编号*/ private int id; /**名字*/ private String name; /**工作*/ private String job; /**地址*/ private String address; public TableInfo(int id,String name,String job,String address){ this.id=id; this.name=name; this.job=job; this.address=address; } /**恢复状态*/ public void recovery(Copy copy){ this.id=copy.getId(); this.name=copy.getName(); this.job=copy.getJob(); this.address=copy.getAddress(); } /**备份状态*/ public Copy backup() { Copy copy=new Copy(); copy.setId(this.id); copy.setName(this.name); copy.setJob(this.job); copy.setAddress(this.address); return copy; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } } 下面是 备忘录类: /** * *备忘录角色 */ public class Copy { /**编号*/ private int id; /**名字*/ private String name; /**工作*/ private String job; /**地址*/ private String address; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } } 下面是 管理者类: /** * 管理者 * */ public class Manager { private Copy copy; public Copy getCopy() { return copy; } public void setCopy(Copy copy) { this.copy = copy; } } 下面是具体调用方式: TableInfo tableInfo=new TableInfo(1, "Tom", "开发工程师", "北京"); Manager manager=new Manager(); manager.setCopy(tableInfo.backup()); tableInfo.setAddress("上海"); //下面是想恢复了 tableInfo.recovery(manager.getCopy()); 到此也就将所有相关代码写完了,所以看起来还是非常简单的,下面简单罗列一下该设计模式的优缺点(摘自百度文库): 优点: 1. 将被存储的状态放在外面,不要和关键对象混在一起,可以帮助维护内聚 2. 保持关键对象的数据封装 3. 3. 提供了容易实现的恢复能力 缺点: 1. 储存和恢复状态的过程可能相当耗时 用途 : 备忘录模式用于存储状态,在java中可以使用序列化。 经典例子: 游戏中途保存游戏,这时候可以调用保存当前状态方法,再读取的时候调用读取。Java序列化机制在这方面非常的方便。
相关 备忘录模式 一、前言 `实现不了是研发的借口?` 实现不了,有时候是功能复杂度较高难以实现,有时候是工期较短实现不完。而编码的行为又是一个不太好量化的过程,同样一个功能每个人的实现 心已赠人/ 2022年10月16日 15:21/ 0 赞/ 15 阅读
相关 备忘录模式 备忘录模式 定义:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 类图: ![这里写图片 「爱情、让人受尽委屈。」/ 2022年09月23日 15:52/ 0 赞/ 6 阅读
相关 备忘录模式 定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态 类型:行为类 类图: ![1340804147_ 以你之姓@/ 2022年09月19日 12:20/ 0 赞/ 208 阅读
相关 备忘录模式 转载:[备忘录模式 - C语言中文网][- C] 备忘录(Memento)模式的定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需 向右看齐/ 2022年09月01日 12:55/ 0 赞/ 6 阅读
相关 备忘录模式 今天无意间看到了备忘录模式,由于之前没有接触过,出于好奇,研究了一下,简单来说就是把当前状态记录下来,作为备份,用于意外情况发生恢复用的,有点类似于回退的意思。 备忘录设计 电玩女神/ 2022年08月19日 15:10/ 0 赞/ 185 阅读
相关 备忘录模式 1.使用场景: 一系列的操作之后恢复原来的状态。实际的使用场景有事务的回滚操作等。 2.UML表示 在备忘录模式中有以下的几种对象: 2.1源发器:Origi 骑猪看日落/ 2022年05月31日 09:26/ 0 赞/ 244 阅读
相关 备忘录模式 备忘录模式 一、概述 1. 就是保存某个对象内部状态的拷贝,这样以后就可以将该对象恢复到 原先的状态。 2. 结构 源发器类Origin 「爱情、让人受尽委屈。」/ 2022年04月17日 00:21/ 0 赞/ 249 阅读
相关 备忘录模式 前言 备忘录(Memento),在不破坏封装的前提下,捕获一个对象的内不状态,并在该对象之外保存这个状态 ,这样以后就可将该对象恢复到原来保存的状态。 一、发起人 一时失言乱红尘/ 2021年12月09日 00:49/ 0 赞/ 303 阅读
相关 备忘录模式 一 点睛 备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定的历史步骤,当新的状态无效或者存在问题时,可以使用暂时存储起来的备忘录将状态复原,很多软件 爱被打了一巴掌/ 2021年07月24日 22:49/ 0 赞/ 497 阅读
相关 备忘录模式 忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。 介绍 **意图**:在不破坏封装性的前提下... 小灰灰/ 2020年06月13日 05:38/ 0 赞/ 741 阅读
还没有评论,来说两句吧...