设计模式(十八)----- 备忘录模式(Memento)----(JAVA版)
来源:互联网 发布:广州天河大数据培训 编辑:程序博客网 时间:2024/06/10 15:16
我们平时写代码,会遇到中间有个变量要保存一下,等一会还要使用,我们可以使用一个变量把它暂时的保存起来,要使用的时候,再去使用; 当我们现在是一个对象的一个时刻的状态要暂时的保存起来,以便下次我再使用的时候呢,我们其实也是可以使用备忘录模式来把这个中间状态来保存,下次我再来使用这个状态,这其实本质也就是备份---名如其功能。
备忘录模式定义:
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
适用性:
1.必须保存一个对象在某一时刻的状态,这样以后需要时它才能恢复到先前的状态
2.如果一个用户接口来让其它的对象直接得到这些状态,将会暴露对象的实现细节并且破坏对象的封装性
参与者:
1.Memento
备忘录存储原发器对象的内部状态
2.Originator
原发器创建一个备忘录,用以记录当前时刻的内部状态
3.Caretaker
负责保存好备忘录,不能对备忘录的内部进行操作或检查
一个简单的样例:
Memento
要保存的内容,也就是原发器对象的内部状态
public class Memento { private String state; public Memento(String state) { this.state = state; } public String getState() { return state; } public void setState(String state) { this.state = state; }}
Originator
要保存内容的对象,对它进行相应的处理,主要是createMemento()和setMemento(Memento menemto)
public class Originator { private String state; public String getState(){ return state; } public void setState(String state){ this.state = state; } public Memento createMemento(){ return new Memento(state); } public void setMemento(Memento menemto){ state = memento.getState(); } public void showState(){ System.out.println(state); }}
Caretaker
public class Caretaker{ private Memento memento; public Memento getMemento(){ return this.memento; } public void setMemento(Memento memento){ this.memento = memento; }}
Test:
public class Test{ public static void main(String[] args){ Originator org = new Originator(); org.setState("开会中"); Caretaker ctk = new Caretaker(); ctk.setMemento(org.createMemento());//将数据封装在Caretaker org.setState("睡觉中"); org.showState(); org.setMemento(ctk.getMemento());//将数据重新导入 org.showState();}
result:
睡觉中
开会中
- 设计模式(十八)----- 备忘录模式(Memento)----(JAVA版)
- 设计模式之(十八)备忘录模式(memento)
- Java设计模式-----Memento备忘录模式
- Java设计模式-----Memento备忘录模式
- java设计模式十六--Memento(备忘录模式)
- java设计模式之备忘录模式Memento
- java设计模式-备忘录模式(Memento)
- JAVA设计模式—备忘录模式(Memento)
- Java设计模式十五:备忘录模式(Memento)
- java设计模式十六:--Memento(备忘录模式)
- Java设计模式----备忘录模式(Memento)
- Java设计模式--备忘录模式【Memento Pattern】
- Memento(备忘录)设计模式
- java设计模式(十八)——备忘录模式(Memento)
- java Memento(备忘录模式)
- Java备忘录模式(Memento)
- 设计模式----Memento(备忘录)模式
- 设计模式--备忘录模式(Memento)
- tomcat 日志 java.util.logging.Logger使用 (三)
- Lanchy,记录一下。
- 开心16非常不错的挂机模式
- 快速理解C#高级概念(二) 事件与委托的区别
- 解压缩zip文件(解决中文乱码)
- 设计模式(十八)----- 备忘录模式(Memento)----(JAVA版)
- dedecms 采集程序的优化!
- 设计模式-开篇
- solrCloud 选举leader的bug
- poj1014
- 8.18交流
- 周迅 女明星卸妆后判若两人 (图)
- DateTime 格式
- 休假结束