软件架构与设计模式3.ppt

* * * * * * * * * * * * * 3.5.6 备忘录模式与案例 备忘录模式(Memento):备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到保存的状态。 1. 备忘录模式结构 在应用开发中,很多时候我们总是需要记录一个对象的内部状态,这样做的目的就是为了允许用户取消不确定或者错误的操作,能够恢复到他原先的状态,备忘录模式是一种给我们的软件提供后悔药的机制,通过它可以使系统恢复到某一特定的历史状态。 2. 备忘录模式案例分析 【例题3-5-6】有一个对象Employee,除了属性外还需要一个保存,还原状态的方法。使用一个对象Memento记录Employee每一个时刻的状态,Originator即为Employee记录状态,CareTaker用来保存,拿回Memento。 import java.util.Vector; class Memento{ String name; int age; public Memento(String name,int age){ = name; this.age = age; } } class Employee{ private String name; private int age; public Employee(String aName,int aAge){ name = aName; age = aAge; } public void setName(String aName){ name = aName; } public void setAge(int aAge){ age = aAge; } public Memento saveMemento(){ return new Memento(name,age); } public void restoreMemento(Memento memento){ age = memento.age; name = ; } public int getAge(){ return age; } public String getName(){ return name; } } class CareTaker{ private Vector v; private int current; public CareTaker(){ current = -1; v = new Vector(); } public void setMemento(Memento mem){ current ++; v.add(mem); } public Memento getMemento(){ if(current0){ current --; return(Memento) v.get(current); } return null; } } public class Client{ public static void show(Employee e){ System.out.println(-----------------------------------); System.out.println(Name:+e.getName()); System.out.println(Age: + e.getAge()); System.out.println(-----------------------------------); } public static void main(String[] args){ Employee e = new Employee(lili,25); CareTaker ct = new CareTaker(); show(e); ct.setMemento(e.saveMemento()); e.se

文档评论(0)

1亿VIP精品文档

相关文档