設計模式之備忘錄模式

2021-07-30 14:04:19 字數 1155 閱讀 4956

定義:在不破壞封閉的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。

備忘錄模式有三個角色:

以儲存遊戲進度為例,退出遊戲前存檔,再進入遊戲就會顯示退出之前的狀態。

**示例

遊戲發起人類

public

class game

public state createstate()

public

void

restorestate(state state)

}

遊戲狀態類

public

class state

public

intgetpoint()

public string tostring()

}

遊戲備忘錄

public

class gamecaretaker

public state load()

}

客戶端

game game = new game();

game.play(10);// 玩到第十關

gamecaretaker gamecaretaker = new gamecaretaker();

// 存檔

gamecaretaker.archive(game.createstate());

// 讀檔

game.restorestate(gamecaretaker.load());

輸出為:

當前關卡:10 時間為:sat apr 15 03:21:32 cst 2017

現在時間為:sat apr 15 03:21:32 cst 2017

甚至你可以管理一系列的狀態,記錄和撤銷都可以,就像象棋每走一步就儲存了當前的棋局,悔棋就是恢復上一步的棋局。總的來說,備忘錄模式好處是給使用者提供了一種可以恢復狀態的機制,而且實現資訊的封裝,使用者不需要關係狀態的細節,但是儲存的狀態過多就會占用大量的資源。不足之處望指教。

設計模式之備忘錄模式

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

設計模式之 備忘錄模式

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

設計模式之備忘錄模式

在日常生活中,總會出現這樣的情況,有時候做錯了一件事,然後特別希望能夠回到發生這件事情之前。當然,這在日常生活中是不可能,不過,在軟體開發過程卻是可以實現的,比如說我們經常使用的ctrl z,或者一些其他軟體的回退功能等等,這其中就涉及到了備忘錄模式 memonto 所謂的備忘錄模式,其實就是把當前...