标签:
让某个对象可以取到之前的某个状态值。
MEMENTO—同时跟几个MM聊天时,一定要记清楚刚才跟MM说了些什么话,不然MM发现了会不高兴的哦,幸亏我有个备忘录,刚才与哪个MM说了什么话我都拷贝一份放到备忘录里面保存,这样可以随时察看以前的记录啦。
备忘录模式:备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捉住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。
这个实例就以状态值为实例。
一个备忘的类, 里面维护一个状态的属性(Memento.java)
一个维护这个状态类的类(Caretaker.java)
一个原始的类(Originator.java)
测试类(TestMain.java)
/** * @author oscar999 * @date 2015-1-7 * @version V1.0 */ package designptn.memento; public class Memento { private String state; public Memento(String state) { this.state = state; } public String getState() { return state; } public void setState(String state) { this.state = state; } }
/** * @author oscar999 * @date 2015-1-7 * @version V1.0 */ package designptn.memento; /** * @author Administrator * */ public class Caretaker { private Memento memento; public Memento getMemento() { return memento; } public void setMemento(Memento memento) { this.memento = memento; } }
/** * @author oscar999 * @date 2015-1-7 * @version V1.0 */ package designptn.memento; public class Originator { private String state; public String getState() { return state; } public void setState(String state) { this.state = state; } public Memento creteMemento() { return new Memento(state); } public void setMemento(Memento memento) { state = memento.getState(); } public void showState() { System.out.println(state); } }
/** * @author oscar999 * @date 2015-1-7 * @version V1.0 */ package designptn.memento; public class TestMain { public static void main(String[] args) { // TODO Auto-generated method stub Originator org = new Originator(); org.setState("State 1"); Caretaker ctk = new Caretaker(); ctk.setMemento(org.creteMemento()); org.setState("State 2"); org.showState(); org.setMemento(ctk.getMemento()); org.showState(); } }
标签:
原文地址:http://blog.csdn.net/oscar999/article/details/24617899