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 閱讀(2212) 評論(0)  編輯  收藏 所屬分類: 模式與重構
          <2008年3月>
          2425262728291
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          常用鏈接

          留言簿(21)

          隨筆分類

          隨筆檔案

          BlogJava熱點博客

          好友博客

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 乐山市| 合山市| 潮州市| 龙里县| 武川县| 盐源县| 兴安县| 无锡市| 丹棱县| 哈尔滨市| 巴楚县| 海宁市| 大关县| 甘孜| 桐庐县| 蓬莱市| 桃园市| 怀安县| 舞钢市| 屏南县| 大新县| 郓城县| 松原市| 五峰| 高台县| 当雄县| 铜梁县| 莱芜市| 藁城市| 富源县| 资兴市| 天镇县| 哈巴河县| 安康市| 竹山县| 两当县| 固镇县| 平度市| 永靖县| 宁夏| 永济市|