备忘录模式 (Memento Pattern)
1、类图

2、代码
import java.util.ArrayList; public class Main { public static void main(String[] args) { Originator originator = new Originator(); CareTaker careTaker = new CareTaker(); originator.setMessage("记下第一件事:吃饭"); careTaker.saveMemento(originator.createMemento()); // 保存进备忘录 originator.setMessage("记下第二件事:睡觉"); careTaker.saveMemento(originator.createMemento()); originator.restoreMemento(careTaker.getMementoByIdx(0)); // 载入备忘录信息 System.out.println(originator.getMessage()); } } class Memento { private String message = null; public Memento(String message) { this.message = message; } public String getMessage() { return message; } } class Originator { private String message = null; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public Memento createMemento() { return new Memento(this.message); } public void restoreMemento(Memento memento) { this.setMessage(memento.getMessage()); } } class CareTaker { private ArrayList<Memento> mementoList = new ArrayList<>(); public void saveMemento(Memento memento) { mementoList.add(memento); } public Memento getMementoByIdx(int idx) { return mementoList.get(idx); } }

浙公网安备 33010602011771号