每个人都有写便签的习惯,其实这也是保存信息的一种方式,和备忘录差不多,都是提醒自己过去做过的事或者将来要做的事。
备忘录模式(Memento Pattern)保存了一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于设计模式里的行为型模式。
主要的实现形式其实很简单,为了不破坏封装性,我们再单独创建一个类来封装备份信息,然后再创建一个容器类,用来存放信息,以便今后的获取。
代码和注释如下:
import java.util.ArrayList; import java.util.List; //备份类,备份的信息 class Memento{ private String state; public Memento(String state) { super(); this.state = state; } public String getState() { return state; } } //被备份类(源类) class Originator{ private String state; public String getState() { return state; } public void setState(String state) { this.state = state; } public Memento saveStatetoMemento(){ return new Memento(state); } public void getStateFromMemento(Memento memento){ state=memento.getState(); } } //存放状态的容器池(添加和获得) class CareTaker{ private List<Memento> mementorList=new ArrayList<Memento>(); public void add(Memento state){ mementorList.add(state); } public Memento get(int index){ return mementorList.get(index); } } public class MementoPatternDemo { public static void main(String[] args) { Originator originator=new Originator(); CareTaker careTaker=new CareTaker(); originator.setState("#1"); originator.setState("#2"); careTaker.add(originator.saveStatetoMemento()); originator.setState("#3"); careTaker.add(originator.saveStatetoMemento()); originator.setState("#4"); System.out.println("当前的状态:"+originator.getState()); originator.getStateFromMemento(careTaker.get(0)); System.out.println("第一次保存的状态:"+originator.getState()); originator.getStateFromMemento(careTaker.get(1)); System.out.println("第二次保存的状态:"+originator.getState()); } }输出:
当前的状态:#4 第一次保存的状态:#2 第二次保存的状态:#3总结:实现的过程是很简单,主要是体会其中封装的思想。