软件编程
位置:首页>> 软件编程>> java编程>> Java设计模式初识之备忘录模式详解

Java设计模式初识之备忘录模式详解

作者:程序员翔仔  发布时间:2023-08-29 23:27:09 

标签:Java,设计模式,备忘录模式

简介

备忘录设计模式(Memento Design Pattern)也叫作快照(Snapshot)模式,主要用于实现防丢失、撤销、恢复等功能。

其定义是,在不违背封装原则的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便之后恢复对象先前的状态。

典型实现

首先,定义一个备忘录 Memento 类存储状态,其代码示例如下:

public class Memento {
   private String state;

public Memento(Originator o) {
       this.state = o.getState();
   }

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

public String getState() {
       return this.state;
   }
}

然后,把需要被存储状态的对象称作为发起者,定义为 Originator 类,包含用于存储成员数据的属性,其代码示例如下:

public class Originator {
   private String state;

public Originator() {}

// 创建一个备忘录对象
   public Memento createMemento() {
       return new Memento(this);
   }

// 根据备忘录状态恢复原发器状态
   public void restoreMemento(Memento m) {
       state = m.getState();
   }

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

public String getState() {
       return this.state;
   }
}

定义一个负责人 Caretaker 用于管理备忘录对象,其代码示例如下:

public class Caretaker {
   private Memento memento;

public Memento getMemento() {
       return this.memento;
   }

public void setMemento(Memento memento) {
       this.memento = memento;
   }
}
public class Date implements java.io.Serializable, Cloneable, Comparable<Date> {
   private transient long fastTime;

public Date(long date) {
       fastTime = date;
   }

public long getTime() {
       return getTimeImpl();
   }

private final long getTimeImpl() {
       if (cdate != null && !cdate.isNormalized()) {
           normalize();
       }
       return fastTime;
   }
}

来源:https://www.cnblogs.com/fatedeity/p/16856567.html

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com