备忘录模式(Memento)

本文介绍了备忘录模式,一种用于存储对象状态以便日后恢复的设计模式。通过具体代码实例展示了如何实现备忘录模式,包括备忘录角色、发起人角色和负责人角色的功能。

备忘录模式又叫做快照模式(Snapshot Pattern)或 Token模式,是对象的行为模式。
备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捕捉住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。
备忘录模式涉及的角色有三个:备忘录角色(Memento),发起人角色(Originator),负责人角色(Caretaker)。

//发起人
public class Originator
{
    private String state;
    //创建备忘录对象的方法
    public Memento createMemento()
    {
        return new Memento(state);
    }
    //将发起人恢复到备忘录对象所记载的状态
    public void restoreMemento(Memento memento)
    {
        this.state = memento.getState();
    }
    public String getState()
    {
        return state;
    }
    public void setState(String state)
    {
        this.state = state;
        System.out.println("当前状态:" + this.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 retrieveMemento()
    {
        return this.memento;
    }
    //备忘录的赋值方法
    public void saveMemento(Memento memento)
    {
        this.memento = memento;
    }
}

//客户端测试类
public class Client 
{
    public static void main(String[] args)
    {
        Originator o = new Originator();
        Caretaker taker = new Caretaker();
        //改变发起人状态
        o.setState("On");
        //创建备忘录对象并保存起来
        taker.saveMemento(o.createMemento());
        //修改发起人状态
        o.setState("OFF");
        o.restoreMemento(taker.retrieveMemento());
        System.out.println(o.getState());
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值