6

我目前试图弄清楚纪念品模式是如何工作的。我坚持Caretaker上课?拥有它真的很重要吗?我的意思是我可以在没有这个类的情况下使用 Memento。请在下面查看我的代码。

public class Originator {
    private String state;
    private Integer code;
    private Map<String, String> parameters;

    // Getters, setters and toString were omitted

    public Memento save() {
        return new Memento(this);
    }

    public void restore(Memento memento) {
        this.state = memento.getState();
        this.code = memento.getCode();
        this.parameters = memento.getParameters();
    }    
}

这是备忘录的实现。

public class Memento {
    private String state;
    private Integer code;
    private Map<String, String> parameters;

    public Memento(Originator originator) {
        Cloner cloner = new Cloner();
        this.state = cloner.deepClone(originator.getState());
        this.code = cloner.deepClone(originator.getCode());
        this.parameters = cloner.deepClone(originator.getParameters());
    }

    // Getters and setters were omitted
}

这段代码运行良好,Memento 完美运行。

4

1 回答 1

4

Caretaker 是调用save()restore()方法的类Originator。它保留(处理)Memento类的集合并决定何时检查点或回滚数据。

于 2014-08-14T17:57:20.683 回答