设计模式:备忘录模式
- 备忘录模式简介:
- 介绍:备忘录模式就是有一个组件,保持对象的某种状态,方便在适当的时候恢复对象。行为型模式
- 意图:在不破坏封装的前提下,捕获一个内部的状态,并在该对象之外保存这个状态
- 主要解决:所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先的状态。
- 何时使用:我们需要记录一个对象的状态,并且需要恢复到前几步的时候。
- 备忘录的成分:
- 发起者:被记录的对象
- 保存者: 保存对象状态的类
- 看守者: 保存多个保存者,记录状态的工具类
- 备忘录模式优缺点:
- 优点:
- 给用户提供了一种可以恢复的机制,可以使用户能够比较方便的回到某个历史的状态
- 实现了信息的封装,使得用户不需要关心状态的保存细节
- 缺点:
- 消耗资源,如果类的成员变量过多,势必要占用很大的资源。
- 优点:
- 备忘录模式实现:
- 发起者:
package com.fg.java.memento; /** * 发起者 */ public 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(); } }
- 保存者:
package com.fg.java.memento; /** * 状态类 */ public class Memento { private String state; public Memento(String state){ this.state = state; } public String getState(){ return state; } }
- 看守者:
package com.fg.java.memento; import java.util.ArrayList; import java.util.List; /** * 看守者 */ public class CareTaker { private List<Memento> mementos = new ArrayList<Memento>(); public void add(Memento state){ mementos.add(state); } public Memento get(int index) { return mementos.get(index); } }
我们在使用文档类的软件的时候Ctrl+Z 和Ctrl+Y就是最好的实践证明,备忘录模式在我们生活中悟出不在
- 发起者: