设计模式之备忘录模式的学习思考
来源:互联网 发布:ubuntu 查看显卡驱动 编辑:程序博客网 时间:2024/05/16 18:54
每个人都有写便签的习惯,其实这也是保存信息的一种方式,和备忘录差不多,都是提醒自己过去做过的事或者将来要做的事。
备忘录模式(Memento Pattern)保存了一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于设计模式里的行为型模式。
主要的实现形式其实很简单,为了不破坏封装性,我们再单独创建一个类来封装备份信息,然后再创建一个容器类,用来存放信息,以便今后的获取。
代码和注释如下:
import java.util.ArrayList;import java.util.List;//备份类,备份的信息class Memento{ private String state; public Memento(String state) { super(); this.state = state; } public String getState() { return state; }}//被备份类(源类)class Originator{ private String state; public String getState() { return state; } public void setState(String state) { this.state = state; } public Memento saveStatetoMemento(){ return new Memento(state); } public void getStateFromMemento(Memento memento){ state=memento.getState(); }}//存放状态的容器池(添加和获得)class CareTaker{ private List<Memento> mementorList=new ArrayList<Memento>(); public void add(Memento state){ mementorList.add(state); } public Memento get(int index){ return mementorList.get(index); }}public class MementoPatternDemo { public static void main(String[] args) { Originator originator=new Originator(); CareTaker careTaker=new CareTaker(); originator.setState("#1"); originator.setState("#2"); careTaker.add(originator.saveStatetoMemento()); originator.setState("#3"); careTaker.add(originator.saveStatetoMemento()); originator.setState("#4"); System.out.println("当前的状态:"+originator.getState()); originator.getStateFromMemento(careTaker.get(0)); System.out.println("第一次保存的状态:"+originator.getState()); originator.getStateFromMemento(careTaker.get(1)); System.out.println("第二次保存的状态:"+originator.getState()); }}
输出:
当前的状态:#4第一次保存的状态:#2第二次保存的状态:#3
总结:实现的过程是很简单,主要是体会其中封装的思想。
阅读全文
0 0
- 设计模式之备忘录模式的学习思考
- 设计模式学习之路-备忘录模式
- 设计模式学习之备忘录模式
- c++的设计模式之备忘录模式
- 备忘录模式学习和思考
- 设计模式之备忘录
- 设计模式之备忘录
- 设计模式之备忘录
- 设计模式学习-----备忘录模式
- 设计模式学习--备忘录模式
- 设计模式学习--备忘录模式
- 设计模式之备忘录模式
- 设计模式之备忘录模式
- 设计模式之备忘录模式
- 设计模式之备忘录模式
- 设计模式之备忘录模式
- 设计模式之备忘录模式
- 设计模式之备忘录模式
- Java 日期时间
- Codeforces 630P
- python的requests初步使用
- maven plugin的execution出错
- java.lang.UnsatisfiedLinkError: no sapjco3 in java.library.path
- 设计模式之备忘录模式的学习思考
- 总结C的指针内容
- javascript 数组去重
- 设计构建器的规则
- sql处理分母为0
- unityXBOX控制第一人称人物的双向转动
- 【BZOJ】2527 [Poi2011]Meteors 整体二分+树状数组
- 首次用java连接redis出现的问题
- 人脸关键点检测数据库&人脸关键点检测最新方法调研