《Android源码设计模式》读书笔记 (13) 第13章 备忘录模式
来源:互联网 发布:易众联读卡器软件 编辑:程序博客网 时间:2024/06/08 14:20
前言
- 备忘录模式也是一种行为模式,用来保存对象的当前状态.
定义
- 定义:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.
- 优点:
1.给用户提供了一种可以恢复状态的机制,可以使用户能够比较方便地回到某个历史的状态
2.实现信息的封装,使得用户不需要关心状态的保存细节 - 缺点:消耗资源,如果累成员变量过多,势必会占用比较大的资源,而且每一次保存都能消耗一定的内存
- 使用场景:
1.需要保存一个对象在某一个时刻的状态或者部分状态
2.如果用一个接口来让其他对象得到这些状态
UML类图
- originator:发起者,负责创建一个备忘录,可以记录\恢复自身的内部状态
- memento:备忘录角色,用于存储originator的内部状态
- caretaker:负责存储备忘录,不能对备忘录memento的内容进行操作和访问,只能够将备忘录传递给其他对象.
实现步骤
- 书中提供了游戏存档和读取存档的案例.相当具有代表性,足以让我们理解这个模式
- originator:在本案例中,是游戏game实体类.
/** * 游戏的数据模型model 三种属性,进度\生命值\武器 * * @author max * */public class Game { private int mCheckPoint = 1; private int mLifeValue = 100; private String mWeapon = "武器"; // 玩游戏 public void play() { } // 退出 public void quit() { } // 创建备忘录Memoto实体 public Memoto createMemoto() { Memoto memoto = new Memoto(); memoto.mCheckPoint = mCheckPoint; memoto.mLifeValue = mLifeValue; memoto.mWeapon = mWeapon; return memoto; } // 恢复读取备忘录Memoto实体 public void restore(Memoto memoto) { this.mCheckPoint = memoto.mCheckPoint; this.mLifeValue = memoto.mLifeValue; this.mWeapon = memoto.mWeapon; }}
- memento:在本案例中是记录game的实体,和game拥有相同的属性
/** * 备忘录,记录游戏实体的状态 * 所有参数即游戏实体的参数 * @author max * */public class Memoto { public int mCheckPoint; public int mLifeValue; public String mWeapon;}
- caretaker:
/** * 负责管理Memoto * 但不能对备忘录Memoto的数据进行操作,只能由游戏实体在create或者restore备忘录实体 * @author max * */public class Caretaker { Memoto mMemoto;//备忘录 //存档 public void archive(Memoto memoto){ this.mMemoto = memoto; } //获取存档 public Memoto getMemoto(){ return mMemoto; }}
源码下载
本案例只是一个简单的备忘录模式demo,便于理解,在实际开发中,我们很容易犯的错误,是在activity类做过多的逻辑处理,混乱且职责太多,把editText相关撤销和重做的功能通过备忘录memoto封装到edittext控件中去.建议有书的童鞋多看看,细细体会,在实际开发中绝对是会有很大的提升的.
点击下载源码.http://download.csdn.net/detail/qq_28690547/9438293
0 0
- 《Android源码设计模式》读书笔记 (13) 第13章 备忘录模式
- 设计模式读书笔记-----备忘录模式
- 设计模式读书笔记-----备忘录模式
- 设计模式读书笔记-----备忘录模式
- 设计模式读书笔记-----备忘录模式
- 《Android源码设计模式解析与实战》读书笔记(十三)——备忘录模式
- 《Android源码设计模式》读书笔记 (1) 第1章 单例模式
- 《Android源码设计模式》读书笔记 (4) 第4章 原型模式
- 《Android源码设计模式》读书笔记 (5) 第5章 工厂模式
- 《Android源码设计模式》读书笔记 (12) 第12章 观察者模式
- 《Android源码设计模式》读书笔记 (6) 第6章 抽象工厂模式
- 《Android源码设计模式》读书笔记 (7) 第7章 策略模式
- 《Android源码设计模式》读书笔记 (8) 第8章 状态模式
- 《Android源码设计模式》读书笔记 (9) 第9章 责任链模式
- 《Android源码设计模式》读书笔记 (10) 第10章 解释器模式
- 《Android源码设计模式》读书笔记 (11) 第11章 命令模式
- 《Android源码设计模式》读书笔记 (15) 第15章 模板方法模式
- 《Android源码设计模式》读书笔记 (16) 第16章 访问者模式
- HTTP 加密
- linux下模块编译基本知识和格式
- HDU 1284 钱币兑换问题 (完全背包)
- 24点javascript自动计算
- 332. Reconstruct Itinerary
- 《Android源码设计模式》读书笔记 (13) 第13章 备忘录模式
- h3c 三层交换机snmp 团体名称配置
- HDU 1284 钱币兑换问题(母函数)
- 【Android】安卓学习笔记之广播(一)动态注册监听网络变化
- android 开发技巧(3)--创建定制的 ViewGroup
- Android质量压缩和尺寸压缩
- 备忘
- React图片上传组件设计
- ModeDriven 和Preparable拦截器 及其源码解析