- 浏览: 323251 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
arlenliugj:
才发现这贴子好早
如何在Ubuntu下安装windows7 -
arlenliugj:
请问一下,这样安装上windows会不会把已经装好的linux ...
如何在Ubuntu下安装windows7 -
zhaomengbin:
写的很不错,可以写个文件给合并的方法么?,将分割后的几份文件还 ...
文件分割程序 -
junhe0723:
3Q,刚出现这个问题解决了。
jvm terminated exit code 1 -
Anddy:
shell 双击选中太不智能了。
XSHELL快捷键设置
一、什么是备忘录模式
Memento模式也叫备忘录模式,是行为模式之一,它的作用是保存对象的内部状态,并在需要的时候(undo/rollback)恢复对象以前的状态。
二、备忘录模式的应用场景
如果一个对象需要保存状态并可通过undo或rollback等操作恢复到以前的状态时,可以使用Memento模式。
1)一个类需要保存它的对象的状态(相当于Originator角色)
2)设计一个类,该类只是用来保存上述对象的状态(相当于Memento角色)
3)需要的时候,Caretaker角色要求Originator返回一个Memento并加以保存
4)undo或rollback操作时,通过Caretaker保存的Memento恢复Originator对象的状态
三、备忘录模式的结构
四、备忘录模式的角色和职责
Originator(原生者)
需要被保存状态以便恢复的那个对象。
Memento(备忘录)
该对象由Originator创建,主要用来保存Originator的内部状态。
Caretaker(管理者)
负责在适当的时间保存/恢复Originator对象的状态。
Person.java
public class Person {
//姓名
private String name;
//性别
private String sex;
//年龄
private int age;
public Person() {
}
public Person(String name, String sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void display() {
System.out.println("name:" + name + ",sex:" + sex + ",age:" + age);
}
}
MainClass.java
public class MainClass {
public static void main(String[] args) {
Person per = new Person("lifengxing","男",30);
//保存内部状态
Person backup = new Person();
backup.setName(per.getName());
backup.setAge(per.getAge());
backup.setSex(per.getSex());
per.display();
//修改
per.setAge(20);
per.display();
//回滚 还原
per.setName(backup.getName());
per.setSex(backup.getSex());
per.setAge(backup.getAge());
per.display();
}
}
使用了备忘录模式的例子:
Person.java
package com.ibeifeng.ex2;
public class Person {
//姓名
private String name;
//性别
private String sex;
//年龄
private int age;
public Person() {
}
public Person(String name, String sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void display() {
System.out.println("name:" + name + ",sex:" + sex + ",age:" + age);
}
//创建一个备份
public Memento createMemento() {
return new Memento(name,sex,age);
}
//恢复备份,还原
public void setMemento(Memento memento) {
this.name = memento.getName();
this.sex = memento.getSex();
this.age = memento.getAge();
}
}
Caretaker.java
package com.ibeifeng.ex2;
public class MainClass {
public static void main(String[] args) {
Person per = new Person("lifengxing","男",24);
// Memento memento = per.createMemento();
Caretaker caretaker = new Caretaker();
caretaker.setMemento(per.createMemento());
per.display();
per.setName("beifeng");
per.setSex("女");
per.setAge(1);
per.display();
per.setMemento(caretaker.getMemento());
per.display();
}
}
Memento.java
package com.ibeifeng.ex2;
public class Memento {
// 姓名
private String name;
// 性别
private String sex;
// 年龄
private int age;
public Memento(String name, String sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
MainClass.java
package com.ibeifeng.ex2;
public class MainClass {
public static void main(String[] args) {
Person per = new Person("lifengxing","男",24);
// Memento memento = per.createMemento();
Caretaker caretaker = new Caretaker();
caretaker.setMemento(per.createMemento());
per.display();
per.setName("beifeng");
per.setSex("女");
per.setAge(1);
per.display();
per.setMemento(caretaker.getMemento());
per.display();
}
}
Memento模式也叫备忘录模式,是行为模式之一,它的作用是保存对象的内部状态,并在需要的时候(undo/rollback)恢复对象以前的状态。
二、备忘录模式的应用场景
如果一个对象需要保存状态并可通过undo或rollback等操作恢复到以前的状态时,可以使用Memento模式。
1)一个类需要保存它的对象的状态(相当于Originator角色)
2)设计一个类,该类只是用来保存上述对象的状态(相当于Memento角色)
3)需要的时候,Caretaker角色要求Originator返回一个Memento并加以保存
4)undo或rollback操作时,通过Caretaker保存的Memento恢复Originator对象的状态
三、备忘录模式的结构
四、备忘录模式的角色和职责
Originator(原生者)
需要被保存状态以便恢复的那个对象。
Memento(备忘录)
该对象由Originator创建,主要用来保存Originator的内部状态。
Caretaker(管理者)
负责在适当的时间保存/恢复Originator对象的状态。
Person.java
public class Person {
//姓名
private String name;
//性别
private String sex;
//年龄
private int age;
public Person() {
}
public Person(String name, String sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void display() {
System.out.println("name:" + name + ",sex:" + sex + ",age:" + age);
}
}
MainClass.java
public class MainClass {
public static void main(String[] args) {
Person per = new Person("lifengxing","男",30);
//保存内部状态
Person backup = new Person();
backup.setName(per.getName());
backup.setAge(per.getAge());
backup.setSex(per.getSex());
per.display();
//修改
per.setAge(20);
per.display();
//回滚 还原
per.setName(backup.getName());
per.setSex(backup.getSex());
per.setAge(backup.getAge());
per.display();
}
}
使用了备忘录模式的例子:
Person.java
package com.ibeifeng.ex2;
public class Person {
//姓名
private String name;
//性别
private String sex;
//年龄
private int age;
public Person() {
}
public Person(String name, String sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void display() {
System.out.println("name:" + name + ",sex:" + sex + ",age:" + age);
}
//创建一个备份
public Memento createMemento() {
return new Memento(name,sex,age);
}
//恢复备份,还原
public void setMemento(Memento memento) {
this.name = memento.getName();
this.sex = memento.getSex();
this.age = memento.getAge();
}
}
Caretaker.java
package com.ibeifeng.ex2;
public class MainClass {
public static void main(String[] args) {
Person per = new Person("lifengxing","男",24);
// Memento memento = per.createMemento();
Caretaker caretaker = new Caretaker();
caretaker.setMemento(per.createMemento());
per.display();
per.setName("beifeng");
per.setSex("女");
per.setAge(1);
per.display();
per.setMemento(caretaker.getMemento());
per.display();
}
}
Memento.java
package com.ibeifeng.ex2;
public class Memento {
// 姓名
private String name;
// 性别
private String sex;
// 年龄
private int age;
public Memento(String name, String sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
MainClass.java
package com.ibeifeng.ex2;
public class MainClass {
public static void main(String[] args) {
Person per = new Person("lifengxing","男",24);
// Memento memento = per.createMemento();
Caretaker caretaker = new Caretaker();
caretaker.setMemento(per.createMemento());
per.display();
per.setName("beifeng");
per.setSex("女");
per.setAge(1);
per.display();
per.setMemento(caretaker.getMemento());
per.display();
}
}
发表评论
-
访问者模式
2011-02-21 17:25 915话说有一个银行,有三个窗口,但是每个窗口的智能都是一样的,即都 ... -
迭代器模式
2011-02-21 17:25 973【迭代器模式】 迭代器可以顺序访问一个聚集中的元素而不必显露聚 ... -
装饰器模式
2011-02-21 17:25 1911浅谈装饰器模式 序: 今天,为了满足我们项目组长的愿望, ... -
解释器模式
2011-02-21 17:24 1006一、引子 其实没有什么好的例子引入解释器模式,因为它描述了 ... -
命令模式
2011-02-21 17:24 10031.意图: 将一个请求或操作封装到对象中。 2 ... -
策略模式
2011-02-21 17:23 821当我们掌握了Java的语法,当我们了解了面向对象的封装、继承、 ... -
状态模式
2011-02-21 17:23 10981,状态模式允许一个"对象"在其内部状态改 ... -
模板模式
2011-02-21 17:23 1097模板方法(Template Method)模式是GOF设计模式 ... -
备忘录
2011-02-21 17:22 1034备忘录(Memento Pattern)模式 备忘录模式又叫 ... -
原型模式Prototype(深拷贝)
2011-02-21 17:21 18321、定义:原型模式就是 ... -
原型模式
2011-02-21 17:21 1067原型模式(Prototype Patter ... -
抽象工厂模式
2011-02-21 17:20 1300假如你要制作一个对话框控件,你希望这个对话框可以有不同的Loo ... -
工厂方法模式
2011-02-21 17:20 10971、工厂模式的核心思想及分类 工厂方法模式的作用是 ... -
生成器模式
2011-02-21 17:19 1063实际上,既然Builder和Factory同属创建型模式,那么 ... -
构造者模式
2011-02-21 17:19 1110多种设计模式能够解决 ... -
亨元模式
2011-02-21 17:18 1096翻译为亨元模式,或直译为轻量级模式。所谓亨元,就是被其它对象共 ... -
责任链模式
2011-02-21 17:18 6629责任链模式(Chain of Resp ... -
代理模式
2011-02-21 17:17 822代理模式:给某一对象提供代理对象,并由代理对象控制具体对象的引 ... -
观察者模式
2011-02-21 17:17 993size=9] 论坛上很多人都讲设计模式,也讲了很多设计模式, ... -
多线程下的单例模式(上)
2011-02-21 17:07 1047Abstract 在开发中,如果某个实例的 ...
相关推荐
备忘录模式.rar备忘录模式.rar备忘录模式.rar
备忘录模式的示例代码和文档,学习备忘录模式的参考资料。
设计模式之备忘录模式 设计模式之备忘录模式 设计模式之备忘录模式 设计模式之备忘录模式 设计模式之备忘录模式
备忘录模式Demo
备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。 备忘录模式java demo
java设计模式-备忘录模式源代码, 源码中为设计模式的工程源文件,已经测试过,没有问题。
C#备忘录模式 代码例子 写的比较乱,呵呵
设计模式-备忘录模式(讲解及其实现代码)
备忘录模式 C++ 实现
设计模式之备忘录模式的Java版本实现和UML类设计图
本例包含备忘录模式的C#实现,及一个应用案例,加深理解与运用。
责任链模式 备忘录模式 单(双)链表 显示 "正在加载,请稍后……" 原理 1、责任链模式: * 责任连模式的结构 责任连模式的类图非常简单,它由一个抽象地处理类和它的一组实现类组成: * 抽象处理类:抽象处理类中...
备忘录模式C++实现,若理解有误,请留言指出。
备忘录模式在不破坏封装的前提下,记录一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态,本例中设置历次成绩,并记录和保存,最后返回最好成绩
ios平台下备忘录模式最初简代码讲解何为备忘录模式,相关博客http://blog.sina.com.cn/s/blog_161d504630102wxis.html
C#面向对象设计模式纵横谈(21):(行为型模式) Memento 备忘录模式
设计模式专题之(十九)备忘录模式--设计模式备忘录模式示例代码(python--c++)
Android备忘录模式简单Demo,实现通过memoto备忘录实体,实现游戏存档和读档的功能简单模拟,便于理解备忘录模式.同步博文:http://blog.csdn.net/qq_28690547/article/details/50708415
设计模式之备忘录 和 状态模式精讲 19.1 场景问题 19.1.1 开发仿真系统 考虑这样一个仿真应用,功能是:模拟运行针对某个具体问题的多个解决方案,记录运行过程的各种数据,在模拟运行完成过后,好对这多个解决...
设计模式-备忘录模式