Java Memento Pattern(备忘录模式)
来源:互联网 发布:怎么在mac上做铃声 编辑:程序博客网 时间:2024/05/18 03:03
Java Memento Pattern(备忘录模式)
备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。
关键代码:客户不与备忘录类耦合,与备忘录管理类耦合。
优点: 1、给用户提供了一种可以恢复状态的机制,可以使用户能够比较方便地回到某个历史的状态。 2、实现了信息的封装,使得用户不需要关心状态的保存细节。
缺点:消耗资源。如果类的成员变量过多,势必会占用比较大的资源,而且每一次保存都会消耗一定的内存。
注意事项: 1、为了符合迪米特原则,还要增加一个管理备忘录的类。 2、为了节约内存,可使用原型模式+备忘录模式。
- 创建 Memento 类。
/** * 1. 创建Memento类。 * @author mazaiting * */public class Memento { private String state; public Memento(String state) { this.state = state; } public String getState() { return state; } }
- 创建 Originator 类。
/** * 2. 创建 Originator 类。 * @author mazaiting */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(); } }
- 创建 CareTaker 类。
/** * 3. 创建 CareTaker 类。 * @author mazaiting */public class CareTaker { private List<Memento> mementos = new ArrayList<Memento>(); /** * 添加 */ public void add(Memento memento) { mementos.add(memento); } /** * 获取Memento */ public Memento get(int index){ return mementos.get(index); }}
- 使用 CareTaker 和 Originator 对象。
/** * 4. 使用 CareTaker 和 Originator 对象。 * @author mazaiting * */public class Client { public static void main(String[] args) { 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()); }}
- 打印结果
Current State: State #4First saved State: State #2Second saved State: State #3
阅读全文
0 0
- Java Memento Pattern(备忘录模式)
- Java设计模式--备忘录模式【Memento Pattern】
- 备忘录模式(Memento Pattern)
- 备忘录模式(Memento Pattern)
- 备忘录模式(Memento Pattern)
- 备忘录模式 Memento Pattern
- 备忘录模式(Memento Pattern)
- 备忘录模式(Memento Pattern)
- 备忘录模式(Memento Pattern)
- 备忘录模式-Memento Pattern
- 备忘录模式-Memento Pattern
- 备忘录模式 | Memento Pattern
- 再谈备忘录模式 (memento pattern) Java
- Memento Pattern(备忘录模式)
- 备忘录模式(Memento Pattern)
- 备忘录模式(Memento Pattern)
- 备忘录模式(Memento Pattern)
- 备忘录模式(Memento Pattern)
- Java Command Pattern(命令行模式)
- Java Interpreter Pattern(解释器模式)
- Java Iterator Pattern(迭代器模式)
- Java Mediator Pattern(中介者模式)
- Redis基本的数据类型和常用命令
- Java Memento Pattern(备忘录模式)
- Java Observer Pattern(观察者模式)
- Java State Pattern(状态模式)
- Java Null Object Pattern(空对象模式)
- Java Strategy Pattern(策略模式)
- Java Template Pattern(模板模式)
- Java Visitor Pattern(访问者模式)
- Jcenter 依赖完整版
- Java MVC Pattern(MVC 模式)