备忘录模式是一种行为设计模式,它用于在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。这种模式实现了对象状态的保存与恢复,为对象提供了一种备份机制。
备忘录模式(Memento Pattern)是一种行为型设计模式,它通过在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样,就可以将该对象恢复到原先保存的状态,备忘录模式主要用于在不改变其他对象的情况下,实现对某个对象的状态的保存和恢复。
备忘录模式的主要角色有以下几个:
1、发起人(Originator):负责创建一个备忘录,用以记录当前对象的内部状态,同时可以使用备忘录来恢复内部状态。
2、备忘录(Memento):负责存储发起人的内部状态,并可以防止发起人以外的其他对象访问备忘录的内容。
3、管理者(Caretaker):负责保存备忘录,但不能对备忘录的内容进行操作或检查。
备忘录模式的实现步骤如下:
1、定义一个备忘录类(Memento),用于存储发起人的内部状态。
2、定义一个发起人类(Originator),负责创建备忘录,并使用备忘录来恢复内部状态。
3、定义一个管理者类(Caretaker),负责保存备忘录,但不能对备忘录的内容进行操作或检查。
下面是一个简单的备忘录模式的Java实现:
// 备忘录类 class Memento { private String state; public Memento(String state) { this.state = state; } public String getState() { return state; } } // 发起人类 class Originator { private String state; public void setState(String state) { this.state = state; } public String getState() { return state; } public Memento saveToMemento() { return new Memento(state); } public void restoreFromMemento(Memento memento) { state = memento.getState(); } } // 管理者类 class Caretaker { private List<Memento> mementos = new ArrayList<>(); public void addMemento(Memento memento) { mementos.add(memento); } public Memento getMemento(int index) { return mementos.get(index); } } // 测试代码 public class MementoPatternDemo { public static void main(String[] args) { Originator originator = new Originator(); Caretaker caretaker = new Caretaker(); originator.setState("状态1"); caretaker.addMemento(originator.saveToMemento()); originator.setState("状态2"); caretaker.addMemento(originator.saveToMemento()); originator.setState("状态3"); System.out.println("当前状态: " + originator.getState()); originator.restoreFromMemento(caretaker.getMemento(0)); System.out.println("恢复到状态1: " + originator.getState()); } }
通过上述代码,我们实现了一个简单的备忘录模式,发起人类(Originator)在内部状态发生变化时,会将当前状态保存到备忘录中,当需要恢复到某个历史状态时,发起人类可以从备忘录中获取相应的状态信息,并将自身状态恢复到该历史状态,管理者类(Caretaker)负责保存备忘录,但不能对备忘录的内容进行操作或检查,这样,我们就实现了对发起人对象状态的保存与恢复,而不会影响到其他对象。