博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
备忘录模式
阅读量:5795 次
发布时间:2019-06-18

本文共 2054 字,大约阅读时间需要 6 分钟。

定义

备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。

实现

备忘录模式使用三个类 MementoOriginatorCareTaker。Memento 包含了要被恢复的对象的状态。Originator 创建并在 Memento 对象中存储状态。Caretaker 对象负责从 Memento 中恢复对象的状态。

MementoPatternDemo,我们的演示类使用 CareTakerOriginator 对象来显示对象的状态恢复。

img_9f7e4d9815520368c8b22ba29810943b.png
image.png
步骤 1创建 Memento 类。Memento.javapublic class Memento {   private String state;   public Memento(String state){      this.state = state;   }   public String getState(){      return state;   }    }步骤 2创建 Originator 类。Originator.javapublic class Originator {   private String state;   public void setState(String state){      this.state = state;   }   public String getState(){      return state;   }   public Memento saveStateToMemento(){      return new Memento(state);   }   public void getStateFromMemento(Memento Memento){      state = Memento.getState();   }}步骤 3创建 CareTaker 类。CareTaker.javaimport java.util.ArrayList;import java.util.List;public class CareTaker {   private List
mementoList = new ArrayList
(); public void add(Memento state){ mementoList.add(state); } public Memento get(int index){ return mementoList.get(index); }}步骤 4使用 CareTaker 和 Originator 对象。MementoPatternDemo.javapublic class MementoPatternDemo { public static void main(String[] args) { 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("First saved State: " + originator.getState()); originator.getStateFromMemento(careTaker.get(1)); System.out.println("Second saved State: " + originator.getState()); }}步骤 5验证输出。Current State: State #4First saved State: State #2Second saved State: State #3

转载地址:http://rhbfx.baihongyu.com/

你可能感兴趣的文章
[翻译]AKKA笔记 -ACTOR SUPERVISION - 8
查看>>
Meteor:添加用户系统
查看>>
当我们谈网络时,我们谈些什么(5)链路层概述
查看>>
PyTips 0x02 - Python 中的函数式编程
查看>>
从MongoDB2.4升级到3.0的详细步骤
查看>>
阿里云安全肖力:安全基础建设是企业数字化转型的基石 ...
查看>>
STM32学习笔记(三)——外部中断的使用
查看>>
使用《Deep Image Prior》来做图像复原
查看>>
如何用纯 CSS 为母亲节创作一颗像素画风格的爱心
查看>>
Linux基础命令---rmdir
查看>>
阿里云胡晓明:未来将探索区块链在工业互联网领域的应用
查看>>
Java Memento Pattern(备忘录模式)
查看>>
优秀程序员共有的7种优秀编程习惯
查看>>
iOS sqlite3(数据库)
查看>>
粤出"飞龙",打造新制造广东样本
查看>>
编玩边学获数千万元A轮融资,投资方为君联资本
查看>>
maven常用命令
查看>>
开发者论坛一周精粹(第五十五期) 全站HTTPS之OSS教程 一次可以备案几个网站?...
查看>>
(干货)Linux学习资源推荐
查看>>
论国人的素质和一个公司的商业道德
查看>>