Java 实现备忘录(Memento)模式
来源:互联网 发布:mysql 导入employees 编辑:程序博客网 时间:2024/04/30 19:54
/** * 数据对象 * @author stone * */public class DataState {private String action;public void setAction(String action) {this.action = action;}public String getAction() {return action;}}
/** * 一个保存另外一个对象内部状态拷贝 的对象.这样以后就可以将该对象恢复到原先保存的状态. * * @author stone * */import java.io.File;import java.io.Serializable;public class Memento implements Serializable {/*private int number;private File file = null;public Memento(Originator o) {this.number = o.getNumber();this.file = o.getFile();}public int getNumber() {return this.number;}public void setNumber(int number) {this.number = number;}public File getFile() {return this.file;}public void setFile(File file) {this.file = file;}*/private DataState state;public Memento(Originator o) {this.state = o.getState();}public DataState getState() {return state;}public void setState(DataState state) {this.state = state;}}
public class Originator {/*private int number;private File file = null;public Originator() {}// 创建一个Memento,将自身作为参数传入public Memento getMemento() {return new Memento(this);}// 从Memento中取出保存的数据,恢复为原始状态public void setMemento(Memento m) {number = m.getNumber();file = m.getFile();}public int getNumber() {return number;}public void setNumber(int number) {this.number = number;}public File getFile() {return file;}public void setFile(File file) {this.file = file;}*/private DataState state;public Originator() {}public Originator(DataState state) {this.state = state;}// 创建一个Memento,将自身作为参数传入public Memento getMemento() {return new Memento(this);}// 从Memento中取出保存的数据,恢复为原始状态public void setMemento(Memento m) {/* * getMemento() 创建的对象,保存在某个容器里, * 当需要恢复时,将其传入当前方法, 再使用getState(),得出 */this.state = m.getState();}public DataState getState() {return state;}public void setState(DataState state) {this.state = state;}}
/* * 备忘录(Memento)模式 行为型模式 * 流程: Memento用于保存 数据状态, * Originator用于 加载数据, 建立Memento对象,及通过Memento恢复原始数据 */public class Test {public static void main(String[] args) {//Originator originator = new Originator();//originator.setNumber(8);////Memento memento = originator.getMemento();//System.out.println(memento.getNumber());DataState state = new DataState();state.setAction("copy a character");Originator originator = new Originator();System.out.println("创建原始数据");originator.setState(state);System.out.println("创建备忘录对象, 保存原始数据状态");Memento memento = originator.getMemento();System.out.println("创建了一个新数据");originator.setState(new DataState());System.out.println("创建新数据后:" + originator.getState().getAction());/* * memento 需要保存在某地,需要时取出,以恢复它内部所保存的数据 */System.out.println("创建新数据后,恢复原数据");originator.setMemento(memento);System.out.println(originator.getState().getAction());}}打印
创建原始数据创建备忘录对象, 保存原始数据状态创建了一个新数据创建新数据后:null创建新数据后,恢复原数据copy a character
0 0
- Java 实现备忘录(Memento)模式
- java Memento(备忘录模式)
- Java备忘录模式(Memento)
- Java模式 - Memento(备忘录模式)
- 备忘录模式(memento) Java
- Java Memento Pattern(备忘录模式)
- C++设计模式实现--备忘录(Memento)模式
- Java设计模式-----Memento备忘录模式
- Java设计模式-----Memento备忘录模式
- java设计模式十六--Memento(备忘录模式)
- java设计模式之备忘录模式Memento
- java设计模式-备忘录模式(Memento)
- JAVA设计模式—备忘录模式(Memento)
- Java设计模式十五:备忘录模式(Memento)
- java设计模式十六:--Memento(备忘录模式)
- Java设计模式----备忘录模式(Memento)
- Java备忘录模式(Memento模式)
- Java设计模式--备忘录模式【Memento Pattern】
- 程序基础C语言常量(const)参数
- 超级课程表demo
- NYOJ 570欧拉函数求和(欧拉函数&&数论入门)
- BCD编码
- Tomcat源码分析(一)------ 架构
- Java 实现备忘录(Memento)模式
- ios中单例的使用方法以及加线程锁
- 游戏架构其九:光线投射和天空 { Raycast and Sky }
- poj1328
- mac安装pip
- 注意事项
- 单例设计模式
- 几种解决php+mysql中uft-8中文编码乱码的办法
- The type org.springframework.dao.support.DaoSupport cannot be resolved.