备忘录模式(Memento Pattern)是一种行为型设计模式,它的主要目的是在不破坏封装性的前提下,实现对象状态的保存与恢复,这种模式适用于那些需要保存一个对象的内部状态,以便在以后可以恢复该状态的对象,备忘录模式通常用于处理一些需要撤销操作的场景,例如编辑文本、撤销渲染操作等。
备忘录模式的核心组件包括:
1. 发起人(Originator):负责创建备忘录对象和执行业务操作。
2. 备忘录(Memento):用于保存发起人的状态信息。
3. 监听者(Caretaker):负责管理备忘录对象,并在需要时恢复其状态。
下面是一个简单的备忘录模式实现示例:
// 发起人接口 interface Originator { int getState(); void setState(int state); } // 备忘录类 class Memento implements Serializable { private int state; public Memento(int state) { this.state = state; } public int getState() { return state; } } // 监听者接口 interface Caretaker { void saveState(Memento memento); Memento getState(); } // 具体监听者实现类 class ConcreteCaretaker implements Caretaker { private List<Memento> mementoList = new ArrayList<>(); @Override public void saveState(Memento memento) { mementoList.add(memento); } @Override public Memento getState() { if (!mementoList.isEmpty()) { return mementoList.get(mementoList.size() - 1); } else { return null; } } } // 具体发起人实现类 class ConcreteOriginator implements Originator { private int state; private Caretaker caretaker; public ConcreteOriginator(Caretaker caretaker) { this.caretaker = caretaker; } @Override public int getState() { return state; } @Override public void setState(int state) { this.state = state; // 将当前状态保存到备忘录中 caretaker.saveState(new Memento(this.state)); } }