备忘录模式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了备忘录模式相关的知识,希望对你有一定的参考价值。
重要程度:★★☆☆☆
一、什么是备忘录模式
保存对象的某个状态并可以恢复到该状态
二、补充说明
例子很多,如回退 ctri + z,回滚,ps恢复到操作历史的某一刻等等。。。
三、角色
备忘录角色:存储状态
发起人角色:创建备忘录,并利用备忘录存储自己的状态
负责人:管理备忘录
客户端
四、例子,JAVA实现
例子描述:显示一个对象的历史状态
备忘录角色
package com.pichen.dp.behavioralpattern.memento; public class Memento { private String state; public Memento(String state) { this.state = state; } public String getState() { return state; } }
发起人角色
package com.pichen.dp.behavioralpattern.memento; public class State { private String state; public String getState() { return state; } public void setState(String state) { this.state = state; } public Memento saveToMemento(){ return new Memento(state); } public void restoreFromMemento(Memento memento){ this.state = memento.getState(); } }
备忘录管理者
package com.pichen.dp.behavioralpattern.memento; import java.util.ArrayList; import java.util.List; public class MementoMgt { private List<Memento> mementoList = new ArrayList<Memento>(); public void add(Memento state) { mementoList.add(state); } public Memento get(int index){ return mementoList.get(index); } public List<Memento> getMementoList() { return mementoList; } }
客户端Main
package com.pichen.dp.behavioralpattern.memento; public class Main { public static void main(String[] args) { State state = new State(); MementoMgt mementoMgt = new MementoMgt(); state.setState("state1"); mementoMgt.add(state.saveToMemento()); state.setState("state2"); mementoMgt.add(state.saveToMemento()); state.setState("state3"); mementoMgt.add(state.saveToMemento()); state.setState("state4"); mementoMgt.add(state.saveToMemento()); System.out.println("状态历史:"); for(Memento m:mementoMgt.getMementoList()){ System.out.println(m.getState()); } System.out.println("当前状态:"); System.out.println(state.getState()); state.setState(mementoMgt.getMementoList().get(1).getState()); System.out.println("恢复后的状态:"); System.out.println(state.getState()); } }
结果打印:
状态历史:
state1
state2
state3
state4
当前状态:
state4
恢复后的状态:
state2
以上是关于备忘录模式的主要内容,如果未能解决你的问题,请参考以下文章