行为型模式之十一:备忘录模式
行为型模式之十一:备忘录模式
刀狂剑痴 发表于2年前
行为型模式之十一:备忘录模式
  • 发表于 2年前
  • 阅读 12
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

在未来,时间旅行将被发明,备忘录是时间旅行的关键。基本上,他要做的是允许一个对象转换成状态。 在下面的例子,你可以时间旅行到你生命的任何时间,你可以重启去你以前去过的时代。

备忘录模式类图

备忘录模式Java代码

package designpatterns.memento;
import java.util.List;
import java.util.ArrayList;
class Life {
  private String time;
 
  public void set(String time) {
    System.out.println("Setting time to " + time);
    this.time = time;
  }
 
  public Memento saveToMemento() {
    System.out.println("Saving time to Memento");
    return new Memento(time);
  }
 
  public void restoreFromMemento(Memento memento) {
  	time = memento.getSavedTime();
    System.out.println("Time restored from Memento: " + time);
  }
 
  public static class Memento {
    private final String time;
 
    public Memento(String timeToSave) {
    	time = timeToSave;
    }
 
    public String getSavedTime() {
      return time;
    }
  }
}
 
public class You {
  public static void main(String[] args) {
    List savedTimes = new ArrayList();
 
    Life life = new Life();
 
    //time travel and record the eras
    life.set("2000 B.C.");
    savedTimes.add(life.saveToMemento());
    life.set("2000 A.D.");
    savedTimes.add(life.saveToMemento());
    life.set("3000 A.D.");
    savedTimes.add(life.saveToMemento());
    life.set("4000 A.D.");
 
    life.restoreFromMemento(savedTimes.get(0));   
 
  }
}
共有 人打赏支持
粉丝 18
博文 111
码字总数 82582
×
刀狂剑痴
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: