大话设计模式-备忘录模式

发起人 即需要备忘的类

/** * 发起人 即需要备忘的类 */
public class Originator {
    /** * 需要保存的状态 可能有多个 */
    private String state;

    /** * 备忘当前状态 * * @return 备忘录对象 */
    public Memento CreateMemento() {
        return new Memento(state);
    }

    /** * 使用备忘录恢复数据 * * @param memento */
    public void setMemento(Memento memento) {
        this.state = memento.getState();
    }

    @Override
    public String toString() {
        return "当前状态 : " + state;
    }

    public String getState() {
        return state;
    }

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

备忘录 用于保存某个事物的状态信息

/** * 备忘录类 */
public class Memento {
    private String state;

    public Memento(String state) {
        this.state = state;
    }

    public String getState() {
        return state;
    }

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

备忘录管理者 对客户端隐藏备忘录的具体实现

/** * 管理者类 */
public class Caretaker {
    private Memento memento;

    public Memento getMemento() {
        return memento;
    }

    public void setMemento(Memento memento) {
        this.memento = memento;
    }
}

测试主类

/** * 客户端 */
public class Main {
    public static void main(String[] args) {
        Originator originator = new Originator();
        originator.setState("状态 1");
        System.out.println(originator);

        Caretaker caretaker = new Caretaker();
        //此处保存当前状态 用于后续的还原
        caretaker.setMemento(originator.CreateMemento());

        originator.setState("状态 2");
        System.out.println(originator);

        //恢复之前的状态
        originator.setMemento(caretaker.getMemento());
        System.out.println(originator);

    }
}

输出结果

当前状态 : 状态 1
当前状态 : 状态 2
当前状态 : 状态 1
全部评论

相关推荐

不放弃的小鱼干很洒脱:好可爱的离职理由
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务