備忘錄模式總結

2021-09-24 05:53:44 字數 1685 閱讀 6012

備忘錄模式:在不破壞封裝的情況下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可以將該物件恢復到原先儲存的狀態。

備忘錄模式理解:就是備忘錄,將我們更改之前的資料儲存在備忘錄中,當我們要取消更改,或者更改錯誤,想要返回之前的時候,通過備忘錄管理者(就像是乙個介面,專門用來提取備忘錄中的資料和更改備忘錄中的資料的,這樣可以減少客戶端**的負擔。)來獲取我們之前儲存在備忘錄中的資料。

現實聯想:我想玩過魔獸世界之冰封王座的應該都知道,在我們玩劇情的時候,我們每過一關或者不想玩的時候最好儲存一下進度。而儲存進度的備忘錄數量是有限的,這裡每個備忘錄都對應乙個備忘錄類和乙個備忘錄管理類,每當我們儲存進度的時候,都會通過備忘錄管理類,將新的資料新增到備忘錄中,或者更改備忘錄中的資料。(備忘錄是儲存我們資料的地方)

備忘錄模式優點:

將儲存的細節封裝在備忘錄類中,以後更改儲存細節的時候不用影響客戶端。

備忘錄模式比較實用於功能比較複雜的,但需要維護或記錄屬性歷史的類,或者需要儲存的屬性只是眾多屬性中的一小部分是,管理類可以根據儲存的備忘錄資訊還原到前一狀態。

備忘錄例項:遊戲進度的訪問

遊戲角色**

class

gamerole

//讀取存檔

public

void

recoverystate

(rolestatememento memento)

//假設當前狀態的生命力為1000,攻擊力為150,防禦力為100

public

void

getinitstate()

//失敗後的資料

public

void

fight()

//顯示角色當前的資料

public

void

statedisplay()

",this

.vit)

; console.

writeline

("攻擊力:"

,this

.atk)

; console.

writeline

("防禦力:"

,this

.def);}

}

備忘錄類,儲存遊戲資料

class

rolestatememento

public

int vitality

set

}public

int attack

set

}public

int defense

set

}}

管理類**

class

rolestatecaretaker

set

}}

客戶端**

static

void

main

(string[

] args)

新增管理類的功能是讓客戶端不知己呼叫備忘錄,這樣有利於增加**的安全性,和減少與客戶端的偶聯。

備忘錄模式總結

每個人都有犯錯誤的時候,都希望有種 後悔藥 能彌補自己的過失,讓自己重新開始,但現實是殘酷的。在計算機應用中,客戶同樣會常常犯錯誤,能否提供 後悔藥 給他們呢?當然是可以的,而且是有必要的。這個功能由 備忘錄模式 來實現。其實很多應用軟體都提供了這項功能,如 word 記事本 photoshop e...

備忘錄模式

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

備忘錄模式

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