設計模式入門:原型模式 Prototype Pattern

更新於 2024/09/15閱讀時間約 2 分鐘

想像你有一個非常珍愛的玩偶,這個玩偶獨一無二。如果你想要再擁有一個完全相同的玩偶,你會怎麼做呢?自己重新製作一個,可能需要很多時間和心力,但如果有一台神奇的「複製機」,只需按下按鈕,就可以立即產生一個一模一樣的玩偶,這會不會很輕鬆方便?這就是「原型模式(Prototype Pattern)」的核心概念:不從零開始,而是透過複製現有的物件,快速得到新的。


什麼是原型模式?

原型模式是一種建立型設計模式,主要解決如何快速建立物件的問題,尤其當物件結構複雜、建立成本高昂時。我們可以把一個物件看作是樣板,透過「複製」這個樣板來產生新的物件,節省了很多時間和資源。


想像你正在開發一個角色扮演遊戲,遊戲中有很多怪物,每隻怪物都有不同的屬性和能力。如果每次需要新怪物都要重新設定一大堆參數,這將會非常繁瑣。而使用原型模式,你可以先建立一隻怪物的「樣板」,然後根據需要快速複製多隻相同或相似的怪物。


同樣地在圖形設計軟體中,某些常見圖形(例如矩形)如果經常被使用,我們可以先建立一個樣板,再依據這個樣板產生更多相似的圖形,這大大提高了工作效率。


生活中的原型模式

生活中有許多例子都體現了原型模式的思想。比如說影印機複印文件,原始文件就相當於原型,影印出的每一份都是複製品。同樣地生物的細胞分裂過程中,新的細胞也是從原有細胞複製而來。這些例子都體現了原型模式的核心思想:透過「複製」已有的東西,快速產生新東西。


使用原型模式的優缺點

原型模式的最大優點是它能節省時間和資源,尤其當需要大量產生相似物件時,效果非常顯著。然而如果物件結構非常複雜,或涉及動態資源管理,正確實現複製過程就變得不那麼簡單。這要求開發者了解物件的內部運作,並小心處理深拷貝和資源共享等問題。


總結一下,原型模式是一種高效且靈活的解決方案,在某些場景下可以顯著提高開發效率。然而使用時需要注意細節,確保複製過程不會引發潛在的問題。設計模式是解決問題的工具,靈活運用這些模式,可以讓你的軟體開發之旅更加順暢,也能更快產出優雅的作品。


想一窺設計模式的實際運作的話,可以看看我在iThome鐵人賽的文章。
https://ithelp.ithome.com.tw/articles/10350861

    avatar-img
    6會員
    83內容數
    對於經營自媒體、部落格或社群媒體感興趣?我專注於提供實用的寫作技巧、數位行銷策略,以及個人成長建議。 每週,我會分享提升寫作技巧、優化部落格經營、有效管理社群媒體、以及投資理財的寶貴知識。追蹤我,獲得實用的工具和建議,讓你的個人品牌和財務管理更上一層樓!
    留言0
    查看全部
    avatar-img
    發表第一個留言支持創作者!
    ShengYu的沙龍 的其他內容
    你有沒有玩過大型多人線上遊戲(MMO)?畫面上常常出現數百甚至數千名玩家,每個人都有不同的外觀和裝備。這時你有沒有想過,遊戲是怎麼在記憶體不爆炸的情況下管理這麼多角色的?其中一個祕密就是「享元模式」! 什麼是享元模式? 享元模式是一種設計模式,專門用來解決當系統中有大量相似物件時,如何有效減
    大家有沒有想過,當你在終端機輸入指令,或是用正則表達式進行搜尋時,背後的運作原理是什麼?這些操作看似複雜,但其實背後隱藏著一個叫做「解釋器模式」的設計模式,今天就來聊聊這個神奇的模式。 什麼是解釋器模式? 簡單來說解釋器模式是一種用來處理語法規則的設計模式。它的運作方式就像我們學習一門語言,
    想像一下你家裡的電視遙控器。這個遙控器能夠控制不同品牌的電視,無論是開機、關機還是調整音量,它都能輕鬆搞定。遙控器就像是橋接不同電視的中介,讓你只需要按下按鈕,就能控制電視,而不用擔心每台電視的內部細節。這就是橋接模式的精髓:把「操作」和「具體實現」分開,讓它們可以獨立發展。 什麼是橋接模式?
    想像一下你在公司遇到一個棘手的問題。你會怎麼做?通常的做法是先跟你的主管報告,發現他解決不了,就再往上報告給更高層的主管,如果還是解決不了就再往上報告給更高層,這樣層層往上,直到有人可以處理為止。這就是「責任鏈模式」的概念,將任務一步步傳遞,直到問題被解決。 什麼是責任鏈模式? 責任鏈模式是
    你有沒有曾經正在玩一個遊戲,剛剛過了一個超難的關卡,但突然手滑點錯選項,整個進度被重置了?這時候你一定會希望有個「存檔」功能,能讓你回到之前的關卡。這正是備忘錄模式 Memento Pattern 想解決的問題。 備忘錄模式讓我們能夠保存某個物件的狀態,並在需要時還原這些狀態,像是一個「後悔藥
    在開發大型系統時,常常會發現各個物件之間的溝通愈來愈複雜,像是編織成了一張複雜的蜘蛛網。每個物件相互依賴,任何改動都可能牽一髮而動全身。這時候中介者模式就能幫助我們化繁為簡,成為一個「協調者」,讓物件之間的溝通變得簡單清晰。 什麼是中介者模式? 中介者模式是一種行為型設計模式,它讓物件之間的
    你有沒有玩過大型多人線上遊戲(MMO)?畫面上常常出現數百甚至數千名玩家,每個人都有不同的外觀和裝備。這時你有沒有想過,遊戲是怎麼在記憶體不爆炸的情況下管理這麼多角色的?其中一個祕密就是「享元模式」! 什麼是享元模式? 享元模式是一種設計模式,專門用來解決當系統中有大量相似物件時,如何有效減
    大家有沒有想過,當你在終端機輸入指令,或是用正則表達式進行搜尋時,背後的運作原理是什麼?這些操作看似複雜,但其實背後隱藏著一個叫做「解釋器模式」的設計模式,今天就來聊聊這個神奇的模式。 什麼是解釋器模式? 簡單來說解釋器模式是一種用來處理語法規則的設計模式。它的運作方式就像我們學習一門語言,
    想像一下你家裡的電視遙控器。這個遙控器能夠控制不同品牌的電視,無論是開機、關機還是調整音量,它都能輕鬆搞定。遙控器就像是橋接不同電視的中介,讓你只需要按下按鈕,就能控制電視,而不用擔心每台電視的內部細節。這就是橋接模式的精髓:把「操作」和「具體實現」分開,讓它們可以獨立發展。 什麼是橋接模式?
    想像一下你在公司遇到一個棘手的問題。你會怎麼做?通常的做法是先跟你的主管報告,發現他解決不了,就再往上報告給更高層的主管,如果還是解決不了就再往上報告給更高層,這樣層層往上,直到有人可以處理為止。這就是「責任鏈模式」的概念,將任務一步步傳遞,直到問題被解決。 什麼是責任鏈模式? 責任鏈模式是
    你有沒有曾經正在玩一個遊戲,剛剛過了一個超難的關卡,但突然手滑點錯選項,整個進度被重置了?這時候你一定會希望有個「存檔」功能,能讓你回到之前的關卡。這正是備忘錄模式 Memento Pattern 想解決的問題。 備忘錄模式讓我們能夠保存某個物件的狀態,並在需要時還原這些狀態,像是一個「後悔藥
    在開發大型系統時,常常會發現各個物件之間的溝通愈來愈複雜,像是編織成了一張複雜的蜘蛛網。每個物件相互依賴,任何改動都可能牽一髮而動全身。這時候中介者模式就能幫助我們化繁為簡,成為一個「協調者」,讓物件之間的溝通變得簡單清晰。 什麼是中介者模式? 中介者模式是一種行為型設計模式,它讓物件之間的
    你可能也想看
    Google News 追蹤
    Thumbnail
    *合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
    Thumbnail
    傳統摺紙之所以好玩,部分是因為你可以利用簡單的規則變出複雜的結構。換句話說透過紙來程式化。 目前大部分的摺紙機器人的設計都很簡單,其中很多只能有一種設定。
    Thumbnail
    我們最早就是在做動畫,從一般廣告開始,慢慢去擴展不同的類型,比如說遊戲、角色動畫、電視與電影的特效……等等,但是越做越專業的情況下,我們就想再去做一些延伸,像是虛擬攝影棚跟虛擬製作,我們找到這些工作項目的共通元素去發展,甚至到後面我們還去做互動設計、沉浸式多媒體展覽與現在時下最熱門的AI生成技術。
    Thumbnail
    可能包含敏感內容
    鏡像計畫啟動,虛擬的完美自我複製,或許是 AI 世代必然的收束,但除了潮流外,似乎還有甚麼在驅使著我?
    Thumbnail
    本篇文章參考 Youtube 影片(...二次元模型...)內容,為大家找出影片中的模型,直接作圖測試,您直接連結過去,就可以在 TensorArt 內直接使用囉!
    Thumbnail
    這是一個簡單的工作流,可以對輸入的圖片進行3D重建
    Thumbnail
    3D 模型是用來表示物體的多邊形,可以是現實世界的實體或虛構的東西。本文分享國外網站如何製作 3D 模型的多種方法,包括文字轉 3D 模型、圖像轉 3D 模型和掃描現實物體轉 3D 模型等。歡迎想要製作或使用 3D 模型的你參考!
    Thumbnail
    本文介紹如何使用Mockup模板圖庫快速合成高質感的圖檔,包含選擇模板、PSD下載、PS套圖等步驟,讓您輕鬆展現作品並模擬示意圖。
    Thumbnail
    2024開年第一篇獻給「影像美學」專題!這一次的主題與副標比較長"Pattern 圖案,Repetition of similar shape 類似的造形反覆出現,大家在看到這樣的字眼時,腦中是否已經有浮現一些畫面了呢?
    Thumbnail
    *合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
    Thumbnail
    傳統摺紙之所以好玩,部分是因為你可以利用簡單的規則變出複雜的結構。換句話說透過紙來程式化。 目前大部分的摺紙機器人的設計都很簡單,其中很多只能有一種設定。
    Thumbnail
    我們最早就是在做動畫,從一般廣告開始,慢慢去擴展不同的類型,比如說遊戲、角色動畫、電視與電影的特效……等等,但是越做越專業的情況下,我們就想再去做一些延伸,像是虛擬攝影棚跟虛擬製作,我們找到這些工作項目的共通元素去發展,甚至到後面我們還去做互動設計、沉浸式多媒體展覽與現在時下最熱門的AI生成技術。
    Thumbnail
    可能包含敏感內容
    鏡像計畫啟動,虛擬的完美自我複製,或許是 AI 世代必然的收束,但除了潮流外,似乎還有甚麼在驅使著我?
    Thumbnail
    本篇文章參考 Youtube 影片(...二次元模型...)內容,為大家找出影片中的模型,直接作圖測試,您直接連結過去,就可以在 TensorArt 內直接使用囉!
    Thumbnail
    這是一個簡單的工作流,可以對輸入的圖片進行3D重建
    Thumbnail
    3D 模型是用來表示物體的多邊形,可以是現實世界的實體或虛構的東西。本文分享國外網站如何製作 3D 模型的多種方法,包括文字轉 3D 模型、圖像轉 3D 模型和掃描現實物體轉 3D 模型等。歡迎想要製作或使用 3D 模型的你參考!
    Thumbnail
    本文介紹如何使用Mockup模板圖庫快速合成高質感的圖檔,包含選擇模板、PSD下載、PS套圖等步驟,讓您輕鬆展現作品並模擬示意圖。
    Thumbnail
    2024開年第一篇獻給「影像美學」專題!這一次的主題與副標比較長"Pattern 圖案,Repetition of similar shape 類似的造形反覆出現,大家在看到這樣的字眼時,腦中是否已經有浮現一些畫面了呢?