备忘录

常用备忘录

前提是你 提交于 2019-11-29 09:56:00
对象list分组Map<String, List<OrderItem>> trainClassMap = orderItems.stream().collect(Collectors.groupingBy(OrderItem::getOrderSn)); 来源: https://www.cnblogs.com/wygflying163/p/11511904.html

18.备忘录模式

北慕城南 提交于 2019-11-28 18:45:11
备忘录模式就是保存某个对象内部状态的拷贝,这样就可以将该对象恢复为原来的对象。 结构: 源发器类;备忘录类;负责人类; //源发器类public class Emo { private String ename; private int age; private String salary; //进行备忘录操作 public EmpMemento memento(){ return new EmpMemento(this); } //进行数据恢复 public void recovery(EmpMemento em){ this.ename = em.getEname(); this.age = em.getAge(); this.salary = em.getSalary(); } public Emo(String ename, int age, String salary) { super(); this.ename = ename; this.age = age; this.salary = salary; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public int getAge() { return

备忘录模式---行为型

心已入冬 提交于 2019-11-28 08:05:37
1 3 相关模式 (1) 备忘录模式和命令模式 这两个模式可以组合使用。命令模式实现中,在实现命令的撤销和重做的时候,可以使用备忘录模式,在命令操作的时候记录下操作前后的状态,然后在命令撇销和重做的时候,直接使用相应的备忘录对象来恢复状态就可以了在这种撤销的执行顺序和重做的执行顺序可控的情况下,备忘录对象还可以采用增量式记录的方式,有效减少缓存的数据量。 (2) 备忘录模式和原型模式 这两个模式可以组合使用。在原发器对象创建备忘录对象的时候,如果原发器对象中全部或者大部分的状态都需要保存,一个简洁的方式就是直接克隆一个原发器对象。也就是说,这个时候备忘录对象里面存放的是一个原发器对象的实例,这个在前面已经示例过了,这里就不再赘述。 来源: https://www.cnblogs.com/youngao/p/11401120.html

java设计模式----备忘录模式

南笙酒味 提交于 2019-11-27 23:49:45
备忘录模式存在的意义在于在程序里面我们可能会遇到撤销操作的问题,将对象恢复到某个状态。类似事务的回滚。 备忘录模式主要有三个对象 发起人(Originator): 要备份的成员,它提供一个创建备忘录的方法,将自身的信息复制到备忘录中,并提供另一个方法将备忘录中信息覆盖自身信息。 备忘录(Memento): 备忘录对象中包含存储发起人状态的成员变量,它提供set,get或构造方法保存发起人状态及获取发起人状态。 管理角色(Caretaker): 用于管理备忘录对象的实现类。 发起人 package memento; /** * @author mercy * 发起人 */ public class Originator { private String state; // 创建备忘录 public Memento createMenmento() { return new Memento(state); } // 还原 public void rollBack(Memento memento) { state = memento.getState(); } public String getState() { return state; } public void setState(String state) { this.state = state; System.out

设计模式之备忘录模式

白昼怎懂夜的黑 提交于 2019-11-27 15:44:02
备忘录模式真的是很一个比较实用的设计模式,比如说日志恢复、断点重传等等。提供的就是一种“后悔药的机制”。让我们记录下来程序运行过程中的各种状态,还能够恢复。 一、认识备忘录模式 在这里我们以在电脑上下棋为例,通过备忘录模式能够记录下来所走的每一步棋,当突然断点的时候,还能够恢复到某一步,就是这样一个功能。其实备忘录模式的思想就是这样。我们从专业的角度来对其进行一个理解。 备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。 对于我们用户来说,就算是保存的日志被删了,也不会影响我们正常的功能。我们把上面的例子画一个类图描述一下。 这个图已经很清晰了,里面主要涉及到三个角色: (1)Originator:负责创建一个备忘录,就好比是例子中的棋盘。 (2)Mement:备忘录角色,用于存储Originator的内部状态,并且可以防止Originator以外的对象访问Memento,就好比是例子中的电脑日志。 (3)Caretaker: 负责存储备忘录,就好比例子中的电脑。 整个流程逻辑我们捋一遍:电脑把棋盘中的每一步棋保存在日志中。现在三个角色的作用应该就能明白了。 二、代码实现 第一步:新建一个备忘录Step,保存棋盘的每一步棋 //备忘录类:记录棋盘下的每一步棋 public class Step {

行为型模式(十) 备忘录模式(Memento)

一世执手 提交于 2019-11-27 12:12:55
动机(Motivate) 在软件构建过程中,某些对象的状态在转换的过程中,可能由于某种需要,要求程序能够回溯到对象之前处于某个点时的状态。如果使用一些公有接口来让其他对象得到对象的状态,便会暴露对象的细节实现。   如何实现对象状态的良好保存与恢复,但同时又不会因此而破坏对象本身的封装性? 意图(Intent) 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态(如果没有这个关键点,其实深拷贝就可以解决问题)。这样以后就可以将该对象恢复到原先保存的状态。 ——《设计模式》GoF 结构图(Structure) 模式的组成 可以看出,在备忘录模式的结构图有以下角色: (1)、发起人角色(Originator): 记录当前时刻的内部状态,负责创建和恢复备忘录数据。负责创建一个备忘录Memento,用以记录当前时刻自身的内部状态,并可使用备忘录恢复内部状态。Originator【发起人】可以根据需要决定Memento【备忘录】存储自己的哪些内部状态。 (2)、备忘录角色(Memento): 负责存储发起人对象的内部状态,在进行恢复时提供给发起人需要的状态,并可以防止Originator以外的其他对象访问备忘录。备忘录有两个接口:Caretaker【管理角色】只能看到备忘录的窄接口,他只能将备忘录传递给其他对象。Originator【发起人】却可看到备忘录的宽接口