设计模式 | 行为型模式 | 备忘录模式

时间:2021-7-3 作者:qvyue

用于记录对象的某个瞬间,类似于照片。

什么是备忘录模式?

备忘录模式用于保存对象的内部状态而不破坏其封装,并在以后阶段恢复其状态。

备忘录模式的结构和说明

设计模式 | 行为型模式 | 备忘录模式
备忘录模式.jpg

备忘录模式的示例代码

//发起人
public class Originator{
    private String state;
    public void setState(String state){
        this.state=state;
    }
    public String getState(){
        return state;
    }
    public Memento createMemento(){
        return new Memento(state);
    }
    public void setMemento(Memento m){
        this.setState(m.getState());
    }
}
//备忘录
public class Memento{
    private String state;
    public Memento(String state){
        this.state=state;
    }
    public void setState(String state){
        this.state=state;
    }
    public String getState(){
        return state;
    }
}
//管理者
public class Caretaker{
    private Memento memento;
    public void setMemento(Memento m){
        memento=m;
    }
    public Memento getMemento(){
        return memento;
    }
}
public class Test{
    public static void main(String[] args){
        Originator or=new Originator();
        or.setState("S0");
        System.out.println("初始状态:"+or.getState());

        Caretaker cr=new Caretaker();
        cr.setMemento(or.createMemento()); //保存状态

        // 修改后的状态
        or.setState("S1");
        System.out.println("新的状态:"+or.getState());
        or.restoreMemento(cr.getMemento()); //恢复状态
        System.out.println("恢复状态:"+or.getState());
    }
}

适用情况

1、保存一个对象在某一个时刻的全部状态或部分状态,这样以后需要时它能够恢复到先前的状态,实现撤销操作。
2、防止外界对象破坏一个对象历史状态的封装性,避免将对象历史状态的实现细节暴露给外界对象。
3、只要需要执行回滚操作,就会使用备忘录模式。它可用于各种原子事务,如果其中一个操作失败,则必须将对象恢复到初始状态。

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。