备忘录模式

备忘录模式

适用场景:适用于需要维护或记录属性历史的类,或者需要保存的属性只是众多属性的一部分。

怎么使用备忘录模式?

一共需要三种类:一部分类是信息类,一部分类是备份信息类,一部分是管理信息类。

下面通过一个例子来使用备忘录模式

首先是信息类,信息类中内置备份信息类,为了起示范作用,这里展示一个类的情况。备份信息类备份信息是自定义,可备份信息类的全部属性,也可备份部分属性。

/**
 * @author 州牧
 * @description 内置一个Memento对象备份此时的状态
 * @since 2022-03-23 20:28
 */
public class Originator {

    private String state;

    public String getState() {
        return state;
    }

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

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

    public void backMemento(Memento memento){
        state = memento.getState();
    }

    @Override
    public String toString() {
        return "Originator{" +
                "state='" + state + '\'' +
                '}';
    }
}

再者是备份信息类

/**
 * @author 州牧
 * @description 负责储存Originator对象的内部状态
 * @since 2022-03-23 20:28
 */
public class Memento {

    private String state;


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

    public String getState() {
        return state;
    }



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

最后是管理备份信息类,这部分是为了方便管理

/**
 * @author 州牧
 * @description 管理memento
 * @since 2022-03-23 20:32
 */
public class Caretaker {
    private Memento memento;

    public Memento getMemento() {
        return memento;
    }

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

效果如下:

/**
 * @author 州牧
 * @description
 * @since 2022-03-23 20:33
 */
public class Client {

    public static void main(String[] args) {
        Originator o = new Originator();

        o.setState("状态一");
        System.out.println("当前状态:"+o);

        Caretaker c = new Caretaker();
        c.setMemento(o.getMemento());

        o.setState("状态二");
        System.out.println("当前状态:"+o);

        o.backMemento(c.getMemento());
        System.out.println("当前状态:"+o);
    }
}
/*

当前状态:Originator{state='状态一'}
当前状态:Originator{state='状态二'}
当前状态:Originator{state='状态一'}

*/

最后,备忘录的使用是通过增大内存的使用,这消耗了一定的资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值