备忘录模式定义:又称之为快照模式(Snapshop Pattern)或者令牌模式(Token Pattern),是指在不破坏封装的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态,这样我们就可以在需要的时候将该对象恢复到原先保存的状态了。(对象行为型)
备忘录模式有两个目标:
- 储存系统关键对象的重要状态;
- 维护关键对象的封装。

备忘录模式主要有3个角色:
- package Memento.example;
- //发起人角色
- public class Originator {
- private String state;
-
- public void setState(String state) {
- this.state = state;
- }
-
- public String getState() {
- return state;
- }
-
- public Memento saveStateToMemento() {
- return new Memento(state);
- }
-
- public void getStateFromMemento(Memento Memento) {
- state = Memento.getState();
- }
- }
- package Memento.example;
- //备忘录角色
- public class Memento {
- private String state;
-
- public Memento(String state) {
- this.state = state;
- }
-
- public String getState() {
- return state;
- }
- }
- package Memento.example;
- //备忘录管理员
- import java.util.ArrayList;
- import java.util.List;
-
- public class CareTaker {
- private List
mementoList = new ArrayList(); -
- public void add(Memento state){
- mementoList.add(state);
- }
-
- public Memento get(int index){
- return mementoList.get(index);
- }
- }
- package Memento.example;
-
- public class Client {
-
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Originator originator = new Originator();
- CareTaker careTaker = new CareTaker();
- originator.setState("State #1");
- originator.setState("State #2");
- careTaker.add(originator.saveStateToMemento());
- originator.setState("State #3");
- careTaker.add(originator.saveStateToMemento());
- originator.setState("State #4");
-
- System.out.println("Current State: " + originator.getState());
- originator.getStateFromMemento(careTaker.get(0));
- System.out.println("First saved State: " + originator.getState());
- originator.getStateFromMemento(careTaker.get(1));
- System.out.println("Second saved State: " + originator.getState());
- }
-
- }

