首页 > 程序开发 > 软件开发 > Java >

java设计模式 忘录模式

2017-06-07

备忘录模式:备忘录模式(Memento Pattern)用来恢复一个对象的状态到以前的状态。

备忘录模式

备忘录模式(Memento Pattern)用来恢复一个对象的状态到以前的状态

实现

这个示例中,备忘录模式(Memento Pattern)使用三个操作者类。 Memento类中包含要恢复的对象的状态。 创建者在Memento对象中创建和存储状态,Caretaker对象负责从Memento中恢复对象状态。在这个示例中,创建了以下几个类:Memento,Originator和CareTaker,将使用CareTaker和Originator对象来显示对象状态的恢复。

代码

package com.test;

import java.util.ArrayList;

import java.util.List;

//第1步,创建一个Memento类

class Memento {

private String state;

public Memento(String state) {

this.state = state;

}

public String getState() {

return state;

}

}

// 第2步, 创建一个Originator类

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类

class CareTaker {

private List mementoList = new ArrayList();

public void add(Memento state) {

mementoList.add(state);

}

public Memento get(int index) {

return mementoList.get(index);

}

}

public class Test {

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 #4

First saved State: State #2

Second saved State: State #3

相关文章
最新文章
热点推荐