設計模式入門:備忘錄模式 Memento Pattern

更新 發佈閱讀 2 分鐘

你有沒有曾經正在玩一個遊戲,剛剛過了一個超難的關卡,但突然手滑點錯選項,整個進度被重置了?這時候你一定會希望有個「存檔」功能,能讓你回到之前的關卡。這正是備忘錄模式 Memento Pattern 想解決的問題。


備忘錄模式讓我們能夠保存某個物件的狀態,並在需要時還原這些狀態,像是一個「後悔藥」,讓系統能夠在不破壞原有結構的情況下,返回到某個時間點的狀態。


什麼是備忘錄模式?

備忘錄模式是一種行為型設計模式,用來保存物件的狀態,並允許將來在必要時還原它。就像是你在編輯檔案時,隨時可以保存進度並在需要時「復原」或「重做」那些修改。這種模式讓你可以放心地做出改變,因為隨時可以回到之前的狀態。


我們可以把它想成遊戲裡的存檔點。當你存檔後,可以繼續遊戲,遇到困難時還可以回到存檔點,不用從頭開始。備忘錄模式讓系統的狀態管理變得更加靈活和安全。


備忘錄模式的應用

一個常見的應用例子就是文字編輯器中的「復原」和「重做」功能。每次修改檔案的時候,編輯器會記錄當下的狀態,這樣在你需要取消變更時,可以恢復到之前的版本。這個過程不會破壞檔案的其他部分,還讓你可以安心編輯,隨時回到你覺得合適的版本。


備忘錄模式的優缺點

備忘錄模式的一大優點就是能夠保存和還原狀態,特別適合那些需要頻繁保存進度的系統,例如遊戲、編輯器或者設定管理工具。這樣即使做錯了選擇,也可以快速返回先前的狀態,避免大範圍的損失。


不過這個模式也有缺點。當系統的狀態太大,或者保存狀態的頻率太高時,會佔用很多記憶體,影響效能。因此,使用這個模式時需要謹慎,特別是在大型系統中。


總結一下,備忘錄模式提供了一種優雅的方式來保存和恢復系統狀態,非常適合用於需要「後悔藥」的場景,像是遊戲中的存檔功能、檔案編輯中的復原重做等。這個模式雖然靈活,但過度使用可能會對系統效能造成負擔。


對設計模式感興趣的朋友,推薦參考我在iThome鐵人賽的文章。
https://ithelp.ithome.com.tw/articles/10349194

留言
avatar-img
留言分享你的想法!
avatar-img
ShengYu的沙龍
6會員
83內容數
對於經營自媒體、部落格或社群媒體感興趣?我專注於提供實用的寫作技巧、數位行銷策略,以及個人成長建議。 每週,我會分享提升寫作技巧、優化部落格經營、有效管理社群媒體、以及投資理財的寶貴知識。追蹤我,獲得實用的工具和建議,讓你的個人品牌和財務管理更上一層樓!
ShengYu的沙龍的其他內容
2024/10/01
最近看到許多有關職場的文章,讓我感觸良多,也想分享一些想法。 當公司遇到財務問題時,裁員往往是最直接的方法。這時候無論你是公司創始元老,還是奉獻多年的資深員工,公司都只看數字。薪水高的、資深的員工,常常會是第一批被裁的對象。 你也許會想:「我對公司有那麼多貢獻,為什麼還會被裁?」但現實是
2024/10/01
最近看到許多有關職場的文章,讓我感觸良多,也想分享一些想法。 當公司遇到財務問題時,裁員往往是最直接的方法。這時候無論你是公司創始元老,還是奉獻多年的資深員工,公司都只看數字。薪水高的、資深的員工,常常會是第一批被裁的對象。 你也許會想:「我對公司有那麼多貢獻,為什麼還會被裁?」但現實是
2024/09/30
在職場上,許多人都會面臨不快樂的情境,可能是因為壓力、工作與生活不平衡、或是缺乏成就感。你是不是也有過這樣的感覺?今天我想分享我最近看到一個成功人士在職場上讓工作變得更快樂的方法與心態轉變的秘訣。 主動爭取機會,掌握主動權 在職場中,最不快樂的感覺往往來自於被動接受工作。如果你總是被丟一堆工
2024/09/30
在職場上,許多人都會面臨不快樂的情境,可能是因為壓力、工作與生活不平衡、或是缺乏成就感。你是不是也有過這樣的感覺?今天我想分享我最近看到一個成功人士在職場上讓工作變得更快樂的方法與心態轉變的秘訣。 主動爭取機會,掌握主動權 在職場中,最不快樂的感覺往往來自於被動接受工作。如果你總是被丟一堆工
2024/09/29
軟體開發中,我們經常會遇到各種令人抓狂的設計問題。有時候是趕進度的壓力讓我們妥協了設計質量;有時候是忽略了好的設計原則,結果掉進了各種反模式的坑裡。今天我們來繼續聊聊幾個常見的反模式。 寫死 Hard Code 直接將資料值或邏輯硬寫死在程式碼裡,當需求變更時,修改這些 Hard Code
2024/09/29
軟體開發中,我們經常會遇到各種令人抓狂的設計問題。有時候是趕進度的壓力讓我們妥協了設計質量;有時候是忽略了好的設計原則,結果掉進了各種反模式的坑裡。今天我們來繼續聊聊幾個常見的反模式。 寫死 Hard Code 直接將資料值或邏輯硬寫死在程式碼裡,當需求變更時,修改這些 Hard Code
看更多
你可能也想看
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
這篇文章描述了作者對於生活中遺留的習慣、記憶和物品的反思和回憶。作者選擇以網路書寫的方式來重新梳理和分享這些記憶。從筆記的撕下到數位工具的使用,都展現了作者對於記憶整理的執著和努力。
Thumbnail
這篇文章描述了作者對於生活中遺留的習慣、記憶和物品的反思和回憶。作者選擇以網路書寫的方式來重新梳理和分享這些記憶。從筆記的撕下到數位工具的使用,都展現了作者對於記憶整理的執著和努力。
Thumbnail
囤物代表怎樣的執念和對人生的影響?傷痛又要怎樣整理才能讓人重新振作呢?
Thumbnail
囤物代表怎樣的執念和對人生的影響?傷痛又要怎樣整理才能讓人重新振作呢?
Thumbnail
作為一個有收藏欲的人,偶像的戲劇光碟、雜誌、電影票,遊戲送的小飾品、小卡,小說送的明信片、小海報等等,都會是收藏的目標,有想過要在架子上,騰出一格專門用來放週邊,但展示方式和保存情況,實在是很需要深思熟慮的一件事,所以一直都只是粗略的,用A4文件盒分裝了一下 那天又一個心血來潮,總覺得這些週邊
Thumbnail
作為一個有收藏欲的人,偶像的戲劇光碟、雜誌、電影票,遊戲送的小飾品、小卡,小說送的明信片、小海報等等,都會是收藏的目標,有想過要在架子上,騰出一格專門用來放週邊,但展示方式和保存情況,實在是很需要深思熟慮的一件事,所以一直都只是粗略的,用A4文件盒分裝了一下 那天又一個心血來潮,總覺得這些週邊
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News