備忘錄模式 詳解

2022-01-23 07:17:29 字數 1179 閱讀 2498

在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態;

行為型模式

從網上找到的例圖

/**

* created by george on 16/7/16.

*/// 發起角色

var originator = function () ;

this.setstate = function (state) ;

this.creatememento = function () ;

this.restorememento = function (memento) ;

};// 備忘錄

var memento = function (state) ;

this.setstate = function (state) ;

};// 負責人角色

var caretaker = function () ;

this.setmemento = function (memento) ;

};var originator = new originator();

originator.setstate("狀態1 ");

console.log("初始狀態 " + originator.getstate());

var caretaker = new caretaker();

caretaker.setmemento(originator.creatememento());

originator.setstate("狀態2 ");

console.log("改變後狀態 " + originator.getstate());

originator.restorememento(caretaker.getmemento());

console.log("恢復狀態 " + originator.getstate());

當發起人角色中的狀態改變的時候,可以還原到之前的狀態;

備份的狀態是儲存在發起人角色之外的,這樣發起人角色就不需要對各個備份的狀態進行管理;

注意的是

備忘錄模式都是多狀態和多備份的,發起人角色的狀態需要儲存到備忘錄物件中,對資源的消耗是不叫嚴重的;

備忘錄模式

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

備忘錄模式

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

備忘錄模式

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