本站不再更新,歡迎光臨 java開發(fā)技術(shù)網(wǎng)
          隨筆-230  評論-230  文章-8  trackbacks-0

          Memento的定義:
          ?????? Memento是一個保存另外一個對象的內(nèi)部狀態(tài)拷貝的對象,這樣就可以把對象恢復(fù)到原先狀態(tài)。

          確的沒必要用這個東西,耗內(nèi)存,麻煩。我想備份對象為什么不用對象的深度拷貝呢。這樣不是很省事嗎?誰能告訴我一個理由呢?

          下面是一個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(){}
          ?//創(chuàng)建備份
          ?public Memento getMemento(){
          ??return new Memento(this);
          ?}
          ?//恢復(fù)到原始值
          ?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 有貓相伴的日子 閱讀(352) 評論(0)  編輯  收藏 所屬分類: Patterns
          本站不再更新,歡迎光臨 java開發(fā)技術(shù)網(wǎng)
          主站蜘蛛池模板: 罗甸县| 大新县| 朝阳区| 安阳市| 临泽县| 兴义市| 阳朔县| 婺源县| 中卫市| 保靖县| 海兴县| 明溪县| 西华县| 张家界市| 句容市| 阿勒泰市| 高雄县| 三原县| 廉江市| 宁都县| 四平市| 拜城县| 新源县| 双牌县| 西充县| 凌海市| 陕西省| 马边| 金湖县| 奎屯市| 邵武市| 洛川县| 葫芦岛市| 华蓥市| 修文县| 沧州市| 濮阳县| 营山县| 蒙山县| 英吉沙县| 房产|