備忘錄模式

2021-09-12 11:40:55 字數 1574 閱讀 7675

概述:

如果乙個物件需要儲存狀態,並可以通過undo或rollback等操作恢復到以前的狀態時,可以用memento模式

1)乙個類需要儲存他的物件的狀態(相當於originator(原始物件,需要備份的物件)角色)

2)設計乙個類,該類至少用於儲存上述物件的狀態(相當於memento角色)

3)需要的時候,caretaker(管理者)角色要求originator返回乙個memento並加以儲存

4)undo或rollback操作時,通過caretaker儲存的memento恢復originator 物件的狀態

/*** @管理者

* @author admin**/

public class caretaker

public void setmemento(memento memento)

public caretaker(memento memento)

public caretaker()

}/**

* 原始類

* * @author admin**/

public class person implements serializable

public void setname(string name)

public string getage()

public void setage(string age)

public int get***()

public void set***(int ***)

public person(string name, string age, int ***)

public person()

public void display()

/*** @title建立乙個備份

* @return

*/public memento creatememento()

/*** @title 還原乙個備份

* @param memento

*/public void ***memento(memento memento)

/*** 備份類

* * @author admin**/

public class memento

public memento(string name, string age, int ***)

public string getname()

public void setname(string name)

public string getage()

public void setage(string age)

public int get***()

public void set***(int ***)

/*** 執行

* @author admin**/

public class mainclass

提取碼  81i3

備忘錄模式

備忘錄模式 memento 在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。originator 發起人 負責建立乙個備忘錄memento,用以記錄當前時刻它的內部狀態,並可以使用備忘錄恢復內部狀態。originator可根據需要...

備忘錄模式

先從物件導向的三大特徵之一封裝說起。物件導向的封裝簡單點說就是把狀態 資料 和行為 操作這些資料的方法 放到一起,構成乙個單元,通常叫做類。乙個物件的行為是事先確定好的 靜態 一些指令碼,如果物件的狀態相同,物件看起來就是一樣的。所以當我們需要把乙個物件的某一時刻儲存起來,那麼只需要儲存它在那個時刻...

備忘錄模式

面臨問題 物件狀態的變化無端,如何回溯恢復物件在某個點的狀態?在軟體構建過程中,某些物件的狀態在轉換過程中,可能由於某種需要,要求程式能夠回溯到物件之前處於某個點時的狀態。如果使用一些公用介面來讓其他物件得到物件的狀態,便會暴露物件的細節實現。如何實現物件狀態的良好儲存與恢復?但同時又不會因此而破壞...