Java 设计模式之备忘录学习与掌握
Posted 邹奇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 设计模式之备忘录学习与掌握相关的知识,希望对你有一定的参考价值。
文章目录
定义
- 在不破坏封装性的前提下,获取并保存一个对象的内部状态,以便以后恢复它。
备忘录模式是一种对象行为型模式
优点
- 实现了内部状态的封装。除了创建它的发起人之外,其他对象都不能够访问这些状态信息。
- 提供了一种可以恢复状态的机制。当用户需要时能够比较方便地将数据恢复到某个历史的状态。
- 简化了发起者类。发起者不需要管理和保存其内部状态的各个备份,所有状态信息都保存在备忘录中,并由备忘录管理者进行管理,这符合单一职责原则。
缺点
- 资源消耗大。如果要保存的内部状态信息过多或者特别频繁,将会占用比较大的内存资源。
模式的结构与实现
备忘录模式的核心是设计备忘录类以及用于管理备忘录的管理者类
模式的结构
角色如下:
- 【备忘录角色】负责存储发起人的内部状态,在需要的时候提供这些内部状态给发起人。
- 【备忘录管理者】对备忘录进行管理,提供保存与获取备忘录的功能,但其不能对备忘录的内容进行访问与修改。
- 【发起者角色】记录当前时刻的内部状态信息,提供创建备忘录和恢复备忘录数据的功能,实现其他业务功能,它可以访问备忘录里的所有信息。
模式的实现
- 【备忘录】,代码如下:
/**
* 备忘录:储发起人的内部状态
*/
public class Memo
private String state;
public Memo(String state)
this.state = state;
public String getState()
return state;
public void setState(String state)
this.state = state;
- 【备忘录管理者】,代码如下:
/**
* 管理者:提供保存与获取备忘录的功能,
* 但其不能对备忘录的内容进行访问与修改
*/
public class MemoManager
private Memo memo;
public Memo getMemo()
return memo;
public void setMemo(Memo memo)
this.memo = memo;
- 【发起者】,代码如下:
/**
* 发起者:记录内部状态信息
* 提供创建备忘录和恢复备忘录数据功能
*/
public class Originator
private String state;
public String getState()
return state;
public void setState(String state)
this.state = state;
// 创建备忘录
public Memo createMemo()
return new Memo(state);
// 恢复备忘录
public void restoreMemo(Memo memo)
this.state = memo.getState();
- 【客户端】,调用代码如下:
/**
* 备忘录模式
*/
private void principle_memo()
// 创建发起人并设置初始状态
Originator originator = new Originator();
originator.setState("亚瑟捕猎传说熊去了...");
System.out.println(":> 初始状态 = " + originator.getState());
// 备忘录管理者 保存 发起者创建的备忘录 供下次恢复用
MemoManager memoManager = new MemoManager();
memoManager.setMemo(originator.createMemo());
// 发起人设置新状态
originator.setState("亚瑟执行剧情任务去了...");
System.out.println(":> 新状态 = " + originator.getState());
// 恢复状态
originator.restoreMemo(memoManager.getMemo());
System.out.println(":> 恢复状态 = " + originator.getState());
- 【运行结果】,如下图示:
应用场景
- 需要保存与恢复数据的场景;如游戏存档。
- 需要提供一个可回滚操作的场景;如记事本软件在编辑时的撤回操作。
技术永不眠!我们下期见!
以上是关于Java 设计模式之备忘录学习与掌握的主要内容,如果未能解决你的问题,请参考以下文章