主要目的是儲存乙個物件的某個狀態,以便在適當的時候恢復物件,個人覺得叫備份模式更形象些,通俗的講下:假設有原始類a,a中有各種屬性,a可以決定需要備份的屬性,備忘錄類b是用來儲存a的一些內部狀態,類c呢,就是乙個用來儲存備忘錄的,且只能儲存,不能修改等操作。做個圖來分析一下:
original類是原始類,裡面有需要儲存的屬性value及建立乙個備忘錄類,用來儲存value值。memento類是備忘錄類,storage類是儲存備忘錄的類,持有memento類的例項,該模式很好理解。直接看原始碼:
public class original
public void setvalue(string value)
public original(string value)
public memento creatememento()
public void restorememento(memento memento)
}
public class memento
public string getvalue()
public void setvalue(string value)
}
public class storage
public memento getmemento()
public void setmemento(memento memento)
}
public class test
}
簡單描述下:新建原始類時,value被初始化為egg,後經過修改,將value的值置為niu,最後倒數第二行進行恢復狀態,結果成功恢復了。其實我覺得這個模式叫「備份-恢復」模式最形象。 Memento 備忘錄模式
定義 在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態,這樣以後就可將該物件恢復到原先儲存的狀態。案例 比如現在有乙個繪圖系統,我們在viewer裡面畫了一些圖形,但是在繪製的過程中可能畫出的影象不是想要的,這時候需要到正確的繪製狀態,這時候可以在每次繪製的時候儲存繪製的狀...
備忘錄模式(Memento)
1.目的 如果某個物件 gamerole 需要儲存其狀態 資料 為了不對外暴露資料,它可以自己封裝乙個類 memento 裡面包含其感興趣的資料,當需要儲存時,使用自己的資料生成乙個memento的物件,並將其儲存在caretaker中,當需要reload狀態時,從caretaker中取回memen...
Memento 備忘錄模式
備忘錄模式 memento pattern 儲存乙個物件的某個狀態,以便在適當的時候恢復物件。備忘錄模式屬於行為型模式。意圖 在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。主要解決 所謂備忘錄模式就是在不破壞封裝的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀...