第134章

俗話說:世上難買後悔藥。所以凡事講究個“三思而後行”,但總常見有人做“痛心疾首”狀:當初我要是……。如果真的有《大話西遊》中能時光倒流的“月光寶盒”,那這世上也許會少一些傷感與後悔——當然這隻能是癡人說夢了。

但是在我們手指下的程序世界裡,卻有的後悔藥買。我們講的備忘錄模式便是程序世界裡的“月光寶盒”。

小A:“什麼叫備忘錄模式?”

大B:“備忘錄(Memento)模式又稱標記(Token)模式。在不破壞封裝性的前提下,捕獲一個對象的內部狀態,並在該對象之外保存這個狀態。這樣以後就可將該對象恢復到原先保存的狀態。在講命令模式的時候,我們曾經提到利用中間的命令角色可以實現undo、redo的功能。從定義可以看出備忘錄模式是專門來存放對象歷史狀態的,這對於很好的實現undo、redo功能有很大的幫助。所以在命令模式中undo、redo功能可以配合備忘錄模式來實現。其實單就實現保存一個對象在某一時刻的狀態的功能,還是很簡單的——將對象中要保存的屬性放到一個專門管理備份的對象中,需要的時候則調用約定好的方法將備份的屬性放回到原來的對象中去。但是你要好好看看爲了能讓你的備份對象訪問到原對象中的屬性,是否意味着你就要全部公開或者包內公開對象原本私有的屬性呢?如果你的做法已經破壞了封裝,那麼就要考慮重構一下了。”

第99章第44章第78章第23章第73章第125章第79章第197章第135章第74章第226章第115章第9章第222章第27章第154章第25章第126章第187章第214章第168章第196章第50章第57章第57章第146章第70章第37章第109章第64章第138章第6章第6章第110章第73章第4章第37章第161章第213章第22章第115章第70章第221章第120章第84章第190章第72章第89章第151章第188章第172章第15章第26章第58章第5章第95章第163章第196章第223章第186章第91章第150章第167章第134章第195章第227章第215章第109章第145章第149章第64章第79章第21章第179章第5章第224章第113章第227章第227章第109章第87章第155章第124章第177章第145章第58章第178章第189章第200章第194章第111章第5章第197章第116章第96章第120章第68章第62章第71章第71章
第99章第44章第78章第23章第73章第125章第79章第197章第135章第74章第226章第115章第9章第222章第27章第154章第25章第126章第187章第214章第168章第196章第50章第57章第57章第146章第70章第37章第109章第64章第138章第6章第6章第110章第73章第4章第37章第161章第213章第22章第115章第70章第221章第120章第84章第190章第72章第89章第151章第188章第172章第15章第26章第58章第5章第95章第163章第196章第223章第186章第91章第150章第167章第134章第195章第227章第215章第109章第145章第149章第64章第79章第21章第179章第5章第224章第113章第227章第227章第109章第87章第155章第124章第177章第145章第58章第178章第189章第200章第194章第111章第5章第197章第116章第96章第120章第68章第62章第71章第71章