【每日一记】设计模式——备忘录模式
来源:互联网 发布:mac图片处理 编辑:程序博客网 时间:2024/05/21 11:17
概述
- 定义:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态
- 适用场景:
- 需要保存一个对象在某一个时刻的状态或部分状态
- 如果用一个接口来让其他对象得到这些状态,将会暴露对象的实现细节并破坏对象的封装性,一个对象不希望外界直接访问其内部状态,通过负责人可以间接访问其内部状态
实现
// 备忘录,负责记录对象状态public class Memento { private String state; public Memento(String state) { this.state = state; } public String getState() { return state; }}// 备忘录管理者,负责管理备忘录class Caretaker { private Memento memento; public Caretaker(Memento memento) { this.memento = memento; } public Memento getMemento() { return memento; }}// 要备份状态的对象class Original { private String state; public Original(String state) { this.state = state; } public String getState() { return state; } public void setState(String state) { this.state = state; } public Memento createMemento() { return new Memento(state); } public void restoreMemento(Memento memento) { this.state = memento.getState(); }}
// 客户端public class Client { public static void main(String[] args) throws Exception { Original o = new Original("state 1"); System.out.println(o.getState()); Caretaker c = new Caretaker(o.createMemento()); o.setState("state 2"); System.out.println(o.getState()); o.restoreMemento(c.getMemento()); System.out.println(o.getState()); }}
输出结果
state 1
state 2
state 1
0 0
- 【每日一记】设计模式——备忘录模式
- 每日设计模式——备忘录模式
- 【每日一记】设计模式——单例模式
- 【每日一记】设计模式——工厂模式
- 【每日一记】设计模式——建造者模式
- 【每日一记】设计模式——原型模式
- 【每日一记】设计模式——适配器模式
- 【每日一记】设计模式——装饰器模式
- 【每日一记】设计模式——代理模式
- 【每日一记】设计模式——外观模式
- 【每日一记】设计模式——桥接模式
- 【每日一记】设计模式——组合模式
- 【每日一记】设计模式——享元模式
- 【每日一记】设计模式——策略模式
- 【每日一记】设计模式——模板方法模式
- 【每日一记】设计模式——观察者模式
- 【每日一记】设计模式——迭代器模式
- 【每日一记】设计模式——责任链模式
- 杭电2091空心三角形
- Maven Failsafe 插件
- 题库统计的小玩意_python
- 《iOS移动开发从入门到精通》图书连载6——Xcode8的使用(下)
- Reverse Words in a String
- 【每日一记】设计模式——备忘录模式
- vector容器类的使用
- 北纬数码专营店奇遇记
- APP测试方法总结
- 如何利用老域名SEO优化快速上百度首页
- 【Unity&Shader】NGUI实现图集变灰功能
- bzoj 3043: IncDec Sequence 差分
- 【codeforces 550D】Regular Bridge
- 微信公众号开发生成自定义菜单