你有沒有曾經正在玩一個遊戲,剛剛過了一個超難的關卡,但突然手滑點錯選項,整個進度被重置了?這時候你一定會希望有個「存檔」功能,能讓你回到之前的關卡。這正是備忘錄模式 Memento Pattern 想解決的問題。
備忘錄模式讓我們能夠保存某個物件的狀態,並在需要時還原這些狀態,像是一個「後悔藥」,讓系統能夠在不破壞原有結構的情況下,返回到某個時間點的狀態。
什麼是備忘錄模式?
備忘錄模式是一種行為型設計模式,用來保存物件的狀態,並允許將來在必要時還原它。就像是你在編輯檔案時,隨時可以保存進度並在需要時「復原」或「重做」那些修改。這種模式讓你可以放心地做出改變,因為隨時可以回到之前的狀態。
我們可以把它想成遊戲裡的存檔點。當你存檔後,可以繼續遊戲,遇到困難時還可以回到存檔點,不用從頭開始。備忘錄模式讓系統的狀態管理變得更加靈活和安全。
備忘錄模式的應用
一個常見的應用例子就是文字編輯器中的「復原」和「重做」功能。每次修改檔案的時候,編輯器會記錄當下的狀態,這樣在你需要取消變更時,可以恢復到之前的版本。這個過程不會破壞檔案的其他部分,還讓你可以安心編輯,隨時回到你覺得合適的版本。
備忘錄模式的優缺點
備忘錄模式的一大優點就是能夠保存和還原狀態,特別適合那些需要頻繁保存進度的系統,例如遊戲、編輯器或者設定管理工具。這樣即使做錯了選擇,也可以快速返回先前的狀態,避免大範圍的損失。
不過這個模式也有缺點。當系統的狀態太大,或者保存狀態的頻率太高時,會佔用很多記憶體,影響效能。因此,使用這個模式時需要謹慎,特別是在大型系統中。
總結一下,備忘錄模式提供了一種優雅的方式來保存和恢復系統狀態,非常適合用於需要「後悔藥」的場景,像是遊戲中的存檔功能、檔案編輯中的復原重做等。這個模式雖然靈活,但過度使用可能會對系統效能造成負擔。
對設計模式感興趣的朋友,推薦參考我在iThome鐵人賽的文章。
https://ithelp.ithome.com.tw/articles/10349194