您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
备忘录模式(Memento Pattern):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态
Originator(发起者):记录当前的状态,负责创建和恢复备忘录
Memento(备忘录):负责存储发起者的状态,在需要的时候提供发起人需要的状态
Caretaker(管理者):管理备忘录
(这里我们以单角色、单状态、单备份来演示,思想是相同的,无非是存储数据结构上的区别)
备忘录角色,定义了存储状态的变量,可以根据实际需求定义对应的存储对象
public class Memento { private String state; public String getState() { return state; } public void setState(String state) { this.state = state; }}
发起者角色,存储状态,并且可以创建备忘录和将状态恢复为备忘录的值
public class Originator { private String state; public String getState() { return state; } public void setState(String state) { this.state = state; } public Memento createMemento() { Memento memento = new Memento(); memento.setState(state); return memento; } public void restoreMemento(Memento memento) { this.state = memento.getState(); }}
管理者角色,管理了备忘录
public class Caretaker { private Memento memento; public Memento getMemento() { return memento; } public void setMemento(Memento memento) { this.memento = memento; }}
测试类
public class Client { @Test public void test() { //设置初始状态 Originator originator = new Originator(); originator.setState("状态1"); System.out.println("初始状态:" + originator.getState()); //创建管理者 Caretaker caretaker = new Caretaker(); caretaker.setMemento(originator.createMemento()); //更新状态 originator.setState("状态2"); System.out.println("跟新状态:" + originator.getState()); //恢复状态 originator.restoreMemento(caretaker.getMemento()); System.out.println("恢复状态:" + originator.getState()); }}
运行结果
初始状态:状态1跟新状态:状态2恢复状态:状态1
优点:
缺点:
应用场景:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。