备忘录模式 骑猪看日落 2022-05-31 09:26 243阅读 0赞 ## 1.使用场景: ## 一系列的操作之后恢复原来的状态。实际的使用场景有事务的回滚操作等。 ## 2.UML表示 ## 在备忘录模式中有以下的几种对象: 2.1源发器:Originator 2.2备忘录类:Memento 2.3负责人CareTake 具体的UML示意图如下: ![20180218161125045][] ## 3.代码实现 ## 首先定义Emp类: public class Emp { private String name; private int age; private double salary; public Emp(String name, int age, double salary) { this.name = name; this.age = age; this.salary = salary; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public double getSalary() { return salary; } public void setSalary(double salary) { this.salary = salary; } //进行备忘录操作 public EmpMemento memento(){ return new EmpMemento(this); } //进行数据恢复,恢复成备忘录对象的值 public void recovery(EmpMemento emto){ this.name=emto.getName(); this.age=emto.getAge(); this.salary=emto.getSalary(); } } 定义EmpMemento类: public class EmpMemento { private String name; private int age; private double salary; public EmpMemento(Emp e) {//这是关键 this.name=e.getName(); this.age=e.getAge(); this.salary=e.getSalary(); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public double getSalary() { return salary; } public void setSalary(double salary) { this.salary = salary; } } 编写CareTaker类: public class CareTaker { private EmpMemento memento; public EmpMemento getMemento() { return memento; } public void setMemento(EmpMemento memento) { this.memento = memento; } } 最后给出测试类: public class Client { public static void main(String[] args) { CareTaker careTaker=new CareTaker(); Emp emp=new Emp("小强",90,900); System.out.println(emp.getName()+" "+emp.getAge()+" "+emp.getSalary()); careTaker.setMemento(emp.memento()); emp.setAge(9); System.out.println(emp.getName()+" "+emp.getAge()+" "+emp.getSalary()); emp.recovery(careTaker.getMemento()); System.out.println(emp.getName()+" "+emp.getAge()+" "+emp.getSalary()); } } ## 4.总结 ## 备忘录模式保存了内部状态的拷贝,以后直接恢复即可。 代码地址: [https://github.com/][https_github.com][memoryexplosion][][/design\_pattern\_review/tree/master/src/java/memeto][https_github.com] [20180218161125045]: /images/20220531/a0fef9beff254d898cb017e35c8c1f16.png [https_github.com]: https://github.com/saiJPlus/design_pattern_review/tree/master/src/java/memeto [memoryexplosion]: https://memoryexplosion.github.io/
相关 备忘录模式 一、前言 `实现不了是研发的借口?` 实现不了,有时候是功能复杂度较高难以实现,有时候是工期较短实现不完。而编码的行为又是一个不太好量化的过程,同样一个功能每个人的实现 心已赠人/ 2022年10月16日 15:21/ 0 赞/ 14 阅读
相关 备忘录模式 备忘录模式 定义:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 类图: ![这里写图片 「爱情、让人受尽委屈。」/ 2022年09月23日 15:52/ 0 赞/ 5 阅读
相关 备忘录模式 定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态 类型:行为类 类图: ![1340804147_ 以你之姓@/ 2022年09月19日 12:20/ 0 赞/ 208 阅读
相关 备忘录模式 转载:[备忘录模式 - C语言中文网][- C] 备忘录(Memento)模式的定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需 向右看齐/ 2022年09月01日 12:55/ 0 赞/ 6 阅读
相关 备忘录模式 今天无意间看到了备忘录模式,由于之前没有接触过,出于好奇,研究了一下,简单来说就是把当前状态记录下来,作为备份,用于意外情况发生恢复用的,有点类似于回退的意思。 备忘录设计 电玩女神/ 2022年08月19日 15:10/ 0 赞/ 184 阅读
相关 备忘录模式 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 赞/ 302 阅读
相关 备忘录模式 一 点睛 备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定的历史步骤,当新的状态无效或者存在问题时,可以使用暂时存储起来的备忘录将状态复原,很多软件 爱被打了一巴掌/ 2021年07月24日 22:49/ 0 赞/ 496 阅读
相关 备忘录模式 忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。 介绍 **意图**:在不破坏封装性的前提下... 小灰灰/ 2020年06月13日 05:38/ 0 赞/ 741 阅读
还没有评论,来说两句吧...