【设计模式与Android】备忘录模式——在齐太史简
什么是备忘录模式
所谓备忘录模式,就是在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以后可将这个对象恢复到原先保存的状态的设计模式。
备忘录模式的实现方式
备忘录模式的实现方式需要保证被保存的对象状态不能被对象从外部访问,目的是为了保护好被保存的这些对象状态的完整性以及内部实现不向外暴露。
民族英雄文天祥《正气歌》记载了一个“在齐太史简”的故事,我们先定义一个历史类:
public class History { private String[] recorders = {"太史伯","太史仲","太史叔","太史季","南史氏"}; public History(int record_num) { /** /** /** /** } |
记载真相的备忘录:
public class Memoto { private String truth; public Memoto(String truth) { public String getTruth() { |
备忘录的操作者Caretaker:
public class Caretaker { Memoto memoto; public void archive(Memoto memoto){ public Memoto getMemoto(){ } |
“在齐太史简”的全过程:
History history_0 = new History(0); Caretaker caretaker = new Caretaker(); caretaker.archive(history_0.record()); History history_1 = new History(1); History history_2 = new History(2); History history_3 = new History(3); |
无独有偶,秦始皇灭赵之后第一件事就是把赵国的史书全部烧毁,可是那句“某年月日,秦王为赵王击缻”还是被司马迁记录下来,千古流传,这也是现实中的备忘录模式的功劳。
Android源码中的备忘录模式
(1)onSaveInstanceState
当某个Activity变得容易被系统销毁时,该Activity的onSaveInstanceState方法就会被执行,除非该Activity是被用户主动销毁的。
Android开发中如何利用备忘录模式
(1)备忘录模式给用户提供了一种可以恢复状态的机制,可以使用户能够比较方便地回到某个历史的状态。
(2)备忘录模式实现了信息的封装,使得用户不需要关心状态的保存细节。
需要注意的几个问题
(1)备忘录模式的缺点在于消耗资源。如果类的成员变量过多,势必会占用比较大的资源,而且每一次保存都会消耗一定的内存。
转载于:https://blog.51cto.com/dongfeng9ge/2043982
【设计模式与Android】备忘录模式——在齐太史简相关推荐
- 读书笔记:在齐太史简,在晋董狐笔
吾是近代以来,第一个自称的传统史家.想在自我介绍的时候,就需要介绍一下传统史家是怎么回事.于是就想到了这个典故.这是文天祥的正气歌中的两句. 在齐太史简 <左传>记载: 大史书曰:'崔杼弑 ...
- IOS设计模式之四(备忘录模式,命令模式)
本文原文请见:http://www.raywenderlich.com/46988/ios-design-patterns. 由 @krq_tiger(http://weibo.com/xmuzyq) ...
- Java描述设计模式(24):备忘录模式
本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景 1.场景描述 常见的视频播放软件都具备这样一个功能:假设在播放视频西游记,如果这时候切换播放视频红楼梦,当再次切回播放西游记时, ...
- java备忘录模式应用场景_Java描述设计模式(24):备忘录模式
一.生活场景 1.场景描述 常见的视频播放软件都具备这样一个功能:假设在播放视频西游记,如果这时候切换播放视频红楼梦,当再次切回播放西游记时,视频会从上次切走的时间点继续播放.下面基于备忘录设计模式来 ...
- 一天一种设计模式之二-----备忘录模式
2019独角兽企业重金招聘Python工程师标准>>> 一.备忘录模式 备忘录模式属于三种设计模式中的行为型模式(另外两种是创建型模式和结构型模式). 定义:在不破坏封闭性的前提下, ...
- java备忘录代码和解释_Java描述设计模式(24):备忘录模式
一.生活场景 1.场景描述 常见的视频播放软件都具备这样一个功能:假设在播放视频西游记,如果这时候切换播放视频红楼梦,当再次切回播放西游记时,视频会从上次切走的时间点继续播放.下面基于备忘录设计模式来 ...
- 《研磨设计模式》chap19 备忘录模式
应用场景:需要保存对象的状态和值. 1. 简介 public interface Memento { }public class Originator {//表示原发器的状态 private Stri ...
- Net设计模式实例之备忘录模式(Memento Pattern)
一.备忘录模式简介(Brief Introduction) 备忘录模式(Memento Pattern),在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可以就该对 ...
- 设计模式读书笔记-----备忘录模式
个人比较喜欢玩单机游戏,什么仙剑.古剑.鬼泣.使命召唤.三国无双等等一系列的游戏我都玩过(现在期待凡人修仙传),对于这些游戏除了剧情好.场面大.爽快之外,还可以随时存档,等到下次想玩了又可以从刚开始的 ...
最新文章
- 改进C#代码之24:通过定义并实现接口替代继承
- Flask驱动的静态站点生成器(译)
- OpenCV中霍夫直线变换
- 10.傅里叶变换——更正式的傅里叶变换,频谱,局限性,离散傅里叶变换_4
- 商业医疗险住院报销需要什么材料?
- 约瑟夫环(C语言实现)
- ctfmon是什么启动项_电脑启动项没有ctfmon怎么办_win7启动项没有ctfmon的处理方法...
- TIF转PDF--itextpdf
- 网站标签页如何添加左边的小图标
- 解决Mac电脑连接校园网不弹出登陆窗口问题汇总
- 关于补码与booth算法的想法与逻辑推导
- MCU之芯唐ARM9(转)
- c语言直线和椭圆的交点,直线与椭圆交点距离公式
- candence测量尺寸
- 禁止div被拖动 css,【Web前端问题】div在拖动时出现禁止图标
- 对IPv6的理解以及其与IPv4的区别
- 【zhailu】国外产品经理到底在做些什么?【转载内容】
- vue router连续点击多次路由报错
- JAVA开发与运维(docker运维常规操作)
- 【POJ 1475】 Pushing Boxes