Memento的定义:
Memento是一个保存另外一个对象的内部状态拷贝的对象,这样就可以把对象恢复到原先状态。
确的没必要用这个东西,耗内存,麻烦。我想备份对象为什么不用对象的深度拷贝呢。这样不是很省事吗?谁能告诉我一个理由呢?
下面是一个Memento模式例子,很简单:
package com.pdw.pattern;
import java.io.*;
import java.util.*;
class Originator{
private int number;
private File file;
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public Originator(){}
//创建备份
public Memento getMemento(){
return new Memento(this);
}
//恢复到原始值
public void setMemento(Memento m){
this.file=m.getFile();
this.number=m.getNumber();
}
}
class Memento implements Serializable{
private int number;
private File file;
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public Memento(Originator o){
this.number=o.getNumber();
this.file=o.getFile();
}
}
public class MemebtoImpl {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Originator o=new Originator();
o.setNumber(100);
Memento m=o.getMemento();//建备一个备份对象
o.setNumber(50); //改变对象属性
o.setMemento(m); //还原
System.out.println(o.getNumber());
}
}
posted on 2006-07-10 22:58
有猫相伴的日子 阅读(342)
评论(0) 编辑 收藏 所属分类:
Patterns