Java中的备忘录模式

备忘录模式就是记住对象的每一步的状态,并且能够随时回滚。

1.组成部分

1.Originator

需要备份的对象。可以通过自己的方法产生备忘录Memento。

2.Memento

备忘录,记录Originator的历史状态。

3.Caretaker

用于统一管理Memento对象(Originator每一次进行操作,就会生成一个Memento对象),以及提供恢复功能。

2.备忘录模式实例

public class Originator {
 private State state = State1.instance;
 
 public void setState(int i) {
  state.move(i);
 }
 
 public Memento save() {
  return new Memento(this.state);
 }
 
 public void restore(Memento m) {
  state = m.getState();
 }
 
 
 
 public static void main(String[] strs) {
  Originator o = new Originator();
  Caretaker c = new Caretaker();
  c.addMemento(o.save());
  o.setState(2);
     o.restore(c.getMemento());
 }
}
``

```java
public interface State {
 public State move(int i);
 
 public State getState();
}
public class Caretaker {
 private List<Memento> list = new ArrayList<Memento>();
 
 public void addMemento(Memento m) {
  list.add(m);
 }
 
 public Memento getMemento() {
  return list.get(list.size()-1);
 }
}
public class Memento {
 private State state;
 
 public Memento(State state) {
  this.state = state;
 }
 
 public State getState() {
  return this.state;
 }
}

总结:Originator是要备份的对象且生产备忘录。Caretaker的功能是管理备忘录和取出指定备忘录。Memento是备忘录的基本单元。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值