NBA之备忘录模式

本文详细介绍了备忘录模式的概念及实现方式。备忘录模式主要用于恢复对象到之前的状态,通过Memento存储状态,Originator负责保存状态,而CareTaker则负责管理这些状态。文章通过具体的代码实例展示了如何使用备忘录模式来存储和恢复对象状态。
Design Pattern:

Memento pattern is used to restore state of an object to a previous state 备忘录模式是用来存储以前的状态的

模式: Memento存储记录状态,Originator用来存储状态,Caretaker用来加载Memento中的状态

Memento作为state的一个对象 (就像一张便利贴写上你要记下来的东西)
public class Memento {
   private String state;

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

   public String getState(){
      return state;
   }	
}
复制代码
Originator发起人 (就像是在用便利贴的用户)
public class Originator {

    private String state;

    public String getState() {
        return state;
    }

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

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

    public void getStateFromMemento(Memento memento){
        state = memento.getState();
    }
}
    
复制代码
CareTaker管理类 (就像一个便利贴本本 存放了一大堆便利贴 取的时候报号码,存的时候往上面粘一张)
public class CareTaker {

    private List<Memento> mementoList = new ArrayList<>();

    public void add(Memento memento){
        mementoList.add(memento);
    }

    public Memento get(int index){
        return mementoList.get(index);
    }
}

复制代码
MementoPatternDemo实验开始
public class MementoPatternDemo {

    public static void main(String[] args) {
        //写进备忘录Memento
        //CareTaker 存储Memento
        Originator originator = new Originator();
        CareTaker careTaker = new CareTaker();
        originator.setState("State #1");
        originator.setState("State #2");
        careTaker.add(originator.saveStateToMemento());

        originator.setState("State #3");
        careTaker.add(originator.saveStateToMemento());
        originator.setState("State #4");

        System.out.println("Current State:"+originator.getState());
        originator.getStateFromMemento(careTaker.get(0));
        System.out.println("第一次存放"+originator.getState());
        originator.getStateFromMemento(careTaker.get(1));
        System.out.println("第二次存放"+originator.getState());
        
    }
}
复制代码
结果

转载于:https://juejin.im/post/5a3781d6f265da43163d2b86

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值