备忘录模式
来源:互联网 发布:centos输入法下载 编辑:程序博客网 时间:2024/05/16 09:17
今天无意间看到了备忘录模式,由于之前没有接触过,出于好奇,研究了一下,简单来说就是把当前状态记录下来,作为备份,用于意外情况发生恢复用的,有点类似于回退的意思。
备忘录设计模式,总共分为三个角色:
发起人:要备份的成员,将自身的属性信息进行备份,恢复自身的属性信息等
备忘录:存储发起人要备份的属性信息
管理者:管理备忘录对象
下面以表单信息为样例进行演示:
首先是发起人类:
/** * 发起者 * */public class TableInfo { /**编号*/ private int id; /**名字*/ private String name; /**工作*/ private String job; /**地址*/ private String address; public TableInfo(int id,String name,String job,String address){ this.id=id; this.name=name; this.job=job; this.address=address; } /**恢复状态*/ public void recovery(Copy copy){ this.id=copy.getId(); this.name=copy.getName(); this.job=copy.getJob(); this.address=copy.getAddress(); } /**备份状态*/ public Copy backup() { Copy copy=new Copy(); copy.setId(this.id); copy.setName(this.name); copy.setJob(this.job); copy.setAddress(this.address); return copy; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; }}
下面是 备忘录类:
/** * *备忘录角色 */public class Copy { /**编号*/ private int id; /**名字*/ private String name; /**工作*/ private String job; /**地址*/ private String address; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; }}
下面是 管理者类:
/** * 管理者 * */public class Manager { private Copy copy; public Copy getCopy() { return copy; } public void setCopy(Copy copy) { this.copy = copy; }}
下面是具体调用方式:
TableInfo tableInfo=new TableInfo(1, "Tom", "开发工程师", "北京"); Manager manager=new Manager(); manager.setCopy(tableInfo.backup()); tableInfo.setAddress("上海"); //下面是想恢复了 tableInfo.recovery(manager.getCopy());
到此也就将所有相关代码写完了,所以看起来还是非常简单的,下面简单罗列一下该设计模式的优缺点(摘自百度文库):
优点:
1. 将被存储的状态放在外面,不要和关键对象混在一起,可以帮助维护内聚
2. 保持关键对象的数据封装
3. 3. 提供了容易实现的恢复能力
缺点:
1. 储存和恢复状态的过程可能相当耗时
用途 :
备忘录模式用于存储状态,在java中可以使用序列化。
经典例子:
游戏中途保存游戏,这时候可以调用保存当前状态方法,再读取的时候调用读取。Java序列化机制在这方面非常的方便。
0 0
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- Android使用Webview显示网页
- WKWebView 加载Html
- dedecms自定义获取上级栏目名称和链接的标签 (返回上级栏目按钮)
- 1877: [SDOI2009]晨跑 费用流
- Linux中JDK1.6的安装和配置方法
- 备忘录模式
- Noi2001食物链
- cocos2d-x中android中设置横屏和竖屏
- 工作半年的总结。
- POJ 1164 The Castle
- 自定义View实现TextView中的DrawableLeft缺陷
- 心动著境即是魔,随缘分别则无定
- PHP中SESSION与COOKIE的区别与联系
- 在MFC程序中增加控制台窗口