Memento Pattern

Game


An Example


// Originator.java
public class Originator {
    private String state;
    public String getState(){
        return state;
    }

    public void setState(String state){
        this.state = state;
    }

    public Memento saveStateMemento(){
        return new Memento(state);
    }

    public void getStateFromMemento(Memento memento){
        state = memento.getState();
    }
}
// Memento.java
public class Memento {
    private String state;

    public Memento(String state){
        this.state = state;
    }
    public String getState(){
        return state;
    }
}
// CareTaker.java
import java.util.ArrayList;
import java.util.List;

public class CareTaker {
    private List<Memento> mementos = new ArrayList<Memento>();

    public void add(Memento memento){
        mementos.add(memento);
    }

    public Memento get(int index){
        return mementos.get(index);
    }
}
// Client.java
public class Client {
    public static void main(String[] args) {
        Originator originator = new Originator();
        CareTaker careTaker = new CareTaker();

        originator.setState("State 1");
        careTaker.add(originator.saveStateMemento());

        originator.setState("State 2");
        careTaker.add(originator.saveStateMemento());

        originator.setState("State 3");
        careTaker.add(originator.saveStateMemento());

        System.out.println(originator.getState()); // State 3
        originator.getStateFromMemento(careTaker.get(0)); // State 1
        System.out.println(originator.getState());
    }
}

猜你喜欢

转载自www.cnblogs.com/nedrain/p/13207579.html