GOF23之備忘錄模式

2021-10-03 07:29:30 字數 2106 閱讀 3270

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

棋類遊戲中的悔棋操作

普通軟體中的撤銷

事務管理中的回滾操作

原發器(originator):他是乙個普通類,可以建立乙個備忘錄,並儲存他的內部狀態,也可以使用備忘錄來恢復其內部狀態,一般需要儲存內部狀態的類設計為原發器

備忘錄(memento):儲存原發器的內部狀態,根據原發器來決定儲存哪些內部狀態。備忘錄的設計一般可以參考原發器的設計,根據實際需要確定備忘錄類中的屬性。

除原發器本身與負責人類之外,備忘錄物件不能直接供其他類使用。

負責人(caretaker):負責人又稱管理者,負責儲存備忘錄,但不能對備忘錄的內容進行操作和檢查。

一、原發器(originator):

package com.hezeu.memento;

/*** @classname emp

* @description 原發器

* @date 2020/2/27 下午 11:18

* @created by 朱進博 [email protected]

*/public

class

emppublic

void

recovery

(empmemento mmt)

public

emp(string ename,

int age,

double salary)

public string getename()

public

void

setename

(string ename)

public

intgetage()

public

void

setage

(int age)

public

double

getsalary()

public

void

setsalary

(double salary)

}

二、備忘錄(memento):
package com.hezeu.memento;

/*** @classname empmemento

* @description 備忘錄

* @date 2020/2/27 下午 11:19

* @created by 朱進博 [email protected]

*/public

class

empmemento

public string getename()

public

void

setename

(string ename)

public

intgetage()

public

void

setage

(int age)

public

double

getsalary()

public

void

setsalary

(double salary)

}

三、負責人類(caretaker):
package com.hezeu.memento;

/*** @classname caretaker

* @description 負責人

* @date 2020/2/27 下午 11:25

* @created by 朱進博 [email protected]

*/public

class

caretaker

public

void

setmemento

(empmemento memento)

}

優點:缺點:

設計模式GOF23 備忘錄模式

備忘錄模式 memento 是一種行為性模型,行為型模式關注的是系統中物件之間的相互互動,解決系統在執行時物件之間的相互通訊和協作,進一步明確物件的職責。相比來說,建立型模式關注物件的建立過程,結構型模式關注物件和類的組合關係。我們對一些操作,需要有儲存狀態,甚至需要恢復到之前狀態的要求,這個時候可...

GOF23 設計模式

design patterns elements of reusable object oriented software 即後述 設計模式 一書 由 erich gamma richard helm ralph johnson 和 john vlissides 合著 addison wesley,...

GOF23 單列模式

乙個類只有乙個實列,並且提供乙個對外訪問該例項的全域性訪問點。常見應用場景 資料庫連線池,專案中讀取配置檔案的類,servlet也是單列,spring中的bean預設也是單列 餓漢式懶漢式 雙重檢查鎖 靜態內部類 列舉類一般情況下,大家知道前兩個已經基本ok了,如果再拿後三個跟面試管去 砍 相信他會...