- Java工厂设计模式
- Java抽象工厂模式
- Java单例模式
- Java建造者(Builder)模式
- Java原型模式
- Java适配器模式
- Java桥接模式
- Java过滤器模式(条件模式)
- Java组合模式
- Java装饰模式
- Java门面模式(或外观模式)
- Java享元模式(Flyweight Pattern)
- Java责任链模式
- Java命令模式
- Java迭代器模式
- Java中介者模式(Mediator Pattern)
- Java解释器模式
- Java备忘录模式
- Java观察者模式
- Java状态模式
- Java空对象模式
- Java策略模式
- Java模板模式
- Java访问者模式
- Java MVC模式
- Java业务代理模式
- Java组合实体模式
- Java数据访问对象模式
- Java前端控制器模式
- Java拦截过滤器模式
- Java服务定位器模式
- Java传输对象模式
Java备忘录模式
备忘录模式(Memento Pattern)用来恢复一个对象的状态到以前的状态。 备忘录模式下属于行为模式的类别。
实现实例
在这个示例中,备忘录模式(Memento Pattern)使用三个操作者类。 Memento
类中包含要恢复的对象的状态。 创建者在Memento
对象中创建和存储状态,Caretaker
对象负责从Memento
中恢复对象状态。在这个示例中,创建了以下几个类:Memento
,Originator
和CareTaker
。
MementoPatternDemo
这是一个演示类,它将使用CareTaker
和Originator
对象来显示对象状态的恢复。
备忘录模式(Memento Pattern)示例的结构如下图所示 -
第1步
创建一个Memento
类,其代码如下-
Memento.java
public class Memento { private String state; public Memento(String state){ this.state = state; } public String getState(){ return state; } }
第2步
创建一个Originator
类,其代码如下-
Originator.java
public class Originator { private String state; public void setState(String state){ this.state = state; } public String getState(){ return state; } public Memento saveStateToMemento(){ return new Memento(state); } public void getStateFromMemento(Memento memento){ state = Memento.getState(); } }
第3步
创建一个CareTaker
类,其代码如下-
CareTaker.java
import java.util.ArrayList; import java.util.List; public class CareTaker { private List<Memento> mementoList = new ArrayList<Memento>(); public void add(Memento state){ mementoList.add(state); } public Memento get(int index){ return mementoList.get(index); } }
第4步
创建一个类-MementoPatternDemo
并使用CareTaker
和Originator
对象。
MementoPatternDemo.java
public class MementoPatternDemo { 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()); } }
第5步
验证输出,执行上面的代码得到以下结果 -
Current State: State #4 First saved State: State #2 Second saved State: State #3
- Java教程
- Vim教程
- Swing教程
- Spring教程
- Spring Web Services教程
- Spring MVC教程
- Spring JDBC教程
- Spring Cloud教程
- Spring Boot教程
- Spring Boot CLI教程
- Spring Batch教程
- Spring AOP教程
- PDFBox教程
- JSP教程
- JSF教程
- JPA教程
- Java面向对象设计
- Java设计模式
- Java虚拟机教程
- Java泛型教程
- Java正则表达式教程
- Java数据类型教程
- Java并发编程教程
- Java密码学教程
- Java多线程教程
- Java国际化(i18n)教程
- JavaFX教程
- Java9教程
扫描二维码
程序员编程王