設計模式之備忘錄模式

2021-10-01 06:06:06 字數 1322 閱讀 4752

備忘錄模式定義:在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態,以便以後當需要時能將該物件恢復到原先儲存的狀態。該模式又叫快照模式。該模式屬於行為型模式。

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

解決方案:通過乙個備忘錄類專門儲存物件狀態。

優點:1,提供了一種可以恢復狀態的機制。當使用者需要時能夠比較方便地將資料恢復到某個歷史的狀態。

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

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

缺點:1,消耗資源。如果類的成員變數過多,勢必會占用比較大的資源,而且每一次儲存都會消耗一定的記憶體。

備忘錄模式類圖:

**實現:

客戶端**:

using system;

namespace _02備忘錄模式_基本**}}

管理者:

using system;

using system.collections.generic;

using system.text;

namespace _02備忘錄模式_基本**

set }}

}

備忘錄:

using system;

using system.collections.generic;

using system.text;

namespace _02備忘錄模式_基本**

public string state}}

}

發起人:

using system;

using system.collections.generic;

using system.text;

namespace _02備忘錄模式_基本**

set

}public memento creatememento()

public void setmemento(memento memento)

public void show()}}

總結:

儲存乙個物件的某個時間的狀態,以便在適當的時候恢復物件。

設計模式之備忘錄模式

機器 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...