設計模式之備忘錄模式(Memento)

2021-08-02 14:27:39 字數 1300 閱讀 9593

主要目的是儲存乙個物件的某個狀態,以便在適當的時候恢復物件,個人覺得叫備份模式更形象些,通俗的講下:假設有原始類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

}

輸出:初始化狀態為:egg

修改後的狀態為:niu

恢復後的狀態為:egg

簡單描述下:新建原始類時,value被初始化為egg,後經過修改,將value的值置為niu,最後倒數第二行進行恢復狀態,結果成功恢復了。其實我覺得這個模式叫「備份-恢復」模式最形象。

設計模式之備忘錄模式

機器 public class machine public void startplay disc.setluminance 60 disc.settime 0 disc.setvolume 80 public void stopplay disc.setluminance 70 disc.set...

設計模式之備忘錄模式

定義 在不破壞封閉的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。備忘錄模式有三個角色 以儲存遊戲進度為例,退出遊戲前存檔,再進入遊戲就會顯示退出之前的狀態。示例 遊戲發起人類 public class game public state cr...

設計模式之 備忘錄模式

定義 在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣就可以將該物件 恢復到原先儲存的狀態。很好理解,就像我們以前打通關遊戲一樣,打通某個關卡,就會備份一下,不然根本通不了關。備忘錄 負責儲存發起人物件的內部狀態,在需要的時候提供發起人需要的內部狀態。public c...