備忘錄模式

2022-09-10 00:57:23 字數 1822 閱讀 2742

編輯說明

回到首頁

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

主要是用來防丟失、撤銷、恢復等。在不違背封裝原則的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態,以便之後恢復物件為先前的狀態。

///發起人

/// public

class

originator

set

}public

memento creatememento()

public

void

setmemento(memento memento)

public

void

show()

}

///

///備忘錄

/// public

class

memento

public

string

state}}

///

///管理者

待備份類

public

class

inputtext

public

snapshot createsnapshot()

public

input)

public

void

restoresnapshot(snapshot snapshot)

}

///

///備忘錄

/// public

class

snapshot

public

string

gettext()

}

///

///儲存棧

給使用者提供了一種可以恢復狀態的機制,可以使使用者能夠比較方便地回到某個歷史的狀態。

實現了內部狀態的封裝。除了建立它的發起人之外,其他物件都不能夠訪問這些狀態資訊。

簡化了發起人類。發起人不需要管理和儲存其內部狀態的各個備份,所有狀態資訊都儲存在備忘錄中,並由管理者進行管理,這符合單一職責原則。

需要儲存/恢復資料的相關狀態場景。

提供乙個可回滾的操作。

消耗資源。如果類的成員變數過多,勢必會占用比較大的資源,而且每一次儲存都會消耗一定的記憶體。(可以採用低頻全量備份,高頻增量備份的策略)

demo

備忘錄模式

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

備忘錄模式

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

備忘錄模式

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