posts - 262,  comments - 221,  trackbacks - 0
一、Memento模式的目的:

memento是一个保存另外一个对象内部状态拷贝的对象.这样以后就可以将该对象恢复到原先保存的状态.

二、Memento模式的简单例子:

下面的例子来源于Jdon网站的《GoF设计模式系列》的《Memento模式》,虽然简单却形象地表明了Memento模式的应用

public class Originator 

  
private int number; 
  
private File file = null;

  
public Originator(){}

  
// 创建一个Memento,将自身作为参数传入
  public Memento getMemento(){
    
return new Memento(this);
  }


  
// 从Memento中取出保存的数据,恢复为原始状态
  public void setMemento(Memento m){
     number = m.number;
     file = m.file;
  }


}



private class Memento implements java.io.Serializable

  
private int number;

  
private File file = null;

  
public Memento( Originator o){
            number 
= o.number;
    file 
= o.file;
      }


}

三、Memento模式的特点:

在需要提供保存、恢复对象状态的类中,必须提供两个方法:

.保存对象当前状态方法:将对象自身(this)作为参数传入,创建备忘录。
.恢复对象之前状态的方法:取出备忘录/接收一个备忘录对象,从中获取对象之前的状态

模式的缺点是耗费大,如果内部状态很多,再保存一份,无意要浪费大量内存.

注意:Memento模式保存的是操作前对象的状态,而不是操作后对象的状态;否则就没办法做恢复了


-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要尽力打好一手烂牌。
posted on 2008-03-22 17:56 Paul Lin 阅读(2186) 评论(0)  编辑  收藏 所属分类: 模式与重构

只有注册用户登录后才能发表评论。


网站导航:
 
<2008年3月>
2425262728291
2345678
9101112131415
16171819202122
23242526272829
303112345

常用链接

留言簿(21)

随笔分类

随笔档案

BlogJava热点博客

好友博客

搜索

  •  

最新评论

阅读排行榜

评论排行榜