java设计模式--行为型模式--备忘录模式
备忘录模式,我们平常所做的备忘录么。还得深深研究哦。
备忘录模式:
1 备忘录模式 2 概述 3 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 4 5 6 适用性 7 1.必须保存一个对象在某一个时刻的(部分)状态,这样以后需要时它才能恢复到先前的状态。 8 9 2.如果一个用接口来让其它对象直接得到这些状态,将会暴露对象的实现细节并破坏对象的封装性。 10 11 12 参与者 13 1.Memento 14 备忘录存储原发器对象的内部状态。 15 16 2.Originator 17 原发器创建一个备忘录,用以记录当前时刻它的内部状态。 18 使用备忘录恢复内部状态. 19 20 3.Caretaker 21 负责保存好备忘录。 22 不能对备忘录的内容进行操作或检查。
测试代码:
1 public class Test { 2 3 public static void main(String[] args) { 4 Originator org = new Originator(); 5 org.setState("开会中"); 6 7 Caretaker ctk = new Caretaker(); 8 ctk.setMemento(org.createMemento());//将数据封装在Caretaker 9 10 org.setState("睡觉中"); 11 org.showState();//显示 12 13 org.setMemento(ctk.getMemento());//将数据重新导入 14 org.showState(); 15 } 16 }
1 public class Originator { 2 3 private String state; 4 5 public String getState() { 6 return state; 7 } 8 9 public void setState(String state) { 10 this.state = state; 11 } 12 13 public Memento createMemento() { 14 return new Memento(state); 15 } 16 17 public void setMemento(Memento memento) { 18 state = memento.getState(); 19 } 20 21 public void showState(){ 22 System.out.println(state); 23 } 24 }
1 public class Memento { 2 3 private String state; 4 5 public Memento(String state) { 6 this.state = state; 7 } 8 9 public String getState() { 10 return state; 11 } 12 13 public void setState(String state) { 14 this.state = state; 15 } 16 }
1 public class Caretaker { 2 3 private Memento memento; 4 5 public Memento getMemento(){ 6 return this.memento; 7 } 8 9 public void setMemento(Memento memento){ 10 this.memento = memento; 11 } 12 }
说明:感觉模式写的 比较复杂,适合时候自己才有用好效果。