CoffeeScript 備忘錄模式

2022-06-29 17:15 更新

備忘錄模式

問(wèn)題

你想預(yù)測(cè)對(duì)一個(gè)對(duì)象做出改變后的反應(yīng)。

解決方案

使用備忘錄模式(Memento Pattern)來(lái)跟蹤一個(gè)對(duì)象的變化。使用這個(gè)模式的類(lèi)會(huì)輸出一個(gè)存儲(chǔ)在其他地方的備忘錄對(duì)象。

如果你的應(yīng)用程序可以讓用戶編輯文本文件,例如,他們可能想要撤銷(xiāo)上一個(gè)動(dòng)作。你可以在用戶改變文件之前保存文件現(xiàn)有的狀態(tài),然后回滾到上一個(gè)位置。

class PreserveableText
    class Memento
        constructor: (@text) ->

    constructor: (@text) ->
    save: (newText) ->
        memento = new Memento @text
        @text = newText
        memento
    restore: (memento) ->
        @text = memento.text

pt = new PreserveableText "The original string"
pt.text # => "The original string"

memento = pt.save "A new string"
pt.text # => "A new string"

pt.save "Yet another string"
pt.text # => "Yet another string"

pt.restore memento
pt.text # => "The original string"

討論

備忘錄對(duì)象由PreserveableText#save返回,為了安全保護(hù),分別地存儲(chǔ)著重要的狀態(tài)信息。你可以序列化備忘錄以便來(lái)保證硬盤(pán)中的“撤銷(xiāo)”緩沖或者是那些被編輯的圖片等數(shù)據(jù)密集型對(duì)象。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)