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

          memento是一個保存另外一個對象內部狀態(tài)拷貝的對象.這樣以后就可以將該對象恢復到原先保存的狀態(tài).

          二、Memento模式的簡單例子:

          下面的例子來源于Jdon網(wǎng)站的《GoF設計模式系列》的《Memento模式》,雖然簡單卻形象地表明了Memento模式的應用

          public class Originator 

            
          private int number; 
            
          private File file = null;

            
          public Originator(){}

            
          // 創(chuàng)建一個Memento,將自身作為參數(shù)傳入
            public Memento getMemento(){
              
          return new Memento(this);
            }


            
          // 從Memento中取出保存的數(shù)據(jù),恢復為原始狀態(tài)
            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模式的特點:

          在需要提供保存、恢復對象狀態(tài)的類中,必須提供兩個方法:

          .保存對象當前狀態(tài)方法:將對象自身(this)作為參數(shù)傳入,創(chuàng)建備忘錄。
          .恢復對象之前狀態(tài)的方法:取出備忘錄/接收一個備忘錄對象,從中獲取對象之前的狀態(tài)

          模式的缺點是耗費大,如果內部狀態(tài)很多,再保存一份,無意要浪費大量內存.

          注意:Memento模式保存的是操作前對象的狀態(tài),而不是操作后對象的狀態(tài);否則就沒辦法做恢復了


          -------------------------------------------------------------
          生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
          posted on 2008-03-22 17:56 Paul Lin 閱讀(2212) 評論(0)  編輯  收藏 所屬分類: 模式與重構
          <2008年3月>
          2425262728291
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          常用鏈接

          留言簿(21)

          隨筆分類

          隨筆檔案

          BlogJava熱點博客

          好友博客

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 曲水县| 黄山市| 鄱阳县| 饶阳县| 应城市| 渭源县| 克东县| 呼伦贝尔市| 新余市| 秦皇岛市| 绥化市| 武功县| 遂溪县| 泸西县| 且末县| 同德县| 东乌| 渭源县| 旅游| 甘洛县| 浦北县| 花垣县| 卢湾区| 哈密市| 普格县| 哈尔滨市| 塘沽区| 盐源县| 莲花县| 疏附县| 盐城市| 青铜峡市| 池州市| 儋州市| 台东县| 江阴市| 齐河县| 石棉县| 仁寿县| 理塘县| 恩平市|