本站不再更新,欢迎光临 java开发技术网
随笔-230  评论-230  文章-8  trackbacks-0

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
本站不再更新,欢迎光临 java开发技术网