設計模式入門:橋接模式 Bridge Pattern

更新於 發佈於 閱讀時間約 2 分鐘

想像一下你家裡的電視遙控器。這個遙控器能夠控制不同品牌的電視,無論是開機、關機還是調整音量,它都能輕鬆搞定。遙控器就像是橋接不同電視的中介,讓你只需要按下按鈕,就能控制電視,而不用擔心每台電視的內部細節。這就是橋接模式的精髓:把「操作」和「具體實現」分開,讓它們可以獨立發展。


什麼是橋接模式?

橋接模式是一種結構型設計模式,它的目的是將抽象部分(比如遙控器的功能)與具體實現部分(比如電視的品牌和型號)分離,讓它們可以獨立變化。簡單來說這個模式讓你把「抽象層次」和「具體實作」分開,以便它們可以各自演化而不互相依賴。這樣當需要擴充系統時,不管是改變抽象部分還是實作部分,都能輕鬆搞定。


橋接模式遊戲開發中的例子

在遊戲開發中橋接模式特別有用。假設我們在開發一個角色扮演遊戲,遊戲中有不同的角色(如戰士、法師)和武器(如劍、法杖)。如果我們希望自由地組合角色和武器,而不是為每種組合都建立一個新的類別,橋接模式就能幫助我們做到這點。這樣我們可以隨意組合角色和武器,而不需要重新建立所有的類別,例如 WarriorWithSword, MageWithStaff 等,這會導致類別數量的急劇增加。


橋接模式的優缺點

橋接模式的優點在於它讓抽象與實作分開,這樣你可以靈活地新增或修改兩者中的任何一方,系統的擴展性大大提高。尤其在處理複雜的物件結構或多樣化需求時,它能有效減少程式碼重複,讓系統更易於維護。


橋接模式並不是在所有情況下都適用。對於系統結構簡單、需求固定的情況,這種設計可能會增加不必要的複雜度。另外加入額外的抽象層可能會稍微增加開發難度。


總結一下,橋接模式適合那些需要同時處理多個維度變化的系統。它使得抽象和實作分離,讓系統可以更靈活地演進。在現實中,當面對多重需求的擴展時,橋接模式能讓你輕鬆應對各種變化,避免系統變得難以維護或過於複雜。


想要親身體驗設計模式奧義的人,推薦參考我今年在iThome鐵人賽的文章。
https://ithelp.ithome.com.tw/articles/10349807

留言
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
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
介紹朋友新開的蝦皮選物店『10樓2選物店』,並分享方格子與蝦皮合作的分潤計畫,註冊流程簡單,0成本、無綁約,推薦給想增加收入的讀者。
Thumbnail
介紹朋友新開的蝦皮選物店『10樓2選物店』,並分享方格子與蝦皮合作的分潤計畫,註冊流程簡單,0成本、無綁約,推薦給想增加收入的讀者。
Thumbnail
當你邊吃粽子邊看龍舟競賽直播的時候,可能會順道悼念一下2300多年前投江的屈原。但你知道端午節及其活動原先都與屈原毫無關係嗎?這是怎麼回事呢? 本文深入探討端午節設立初衷、粽子、龍舟競渡與屈原自沉四者。看完這篇文章,你就會對端午、粽子、龍舟和屈原的四角關係有新的認識喔。那就讓我們一起解開謎團吧!
Thumbnail
當你邊吃粽子邊看龍舟競賽直播的時候,可能會順道悼念一下2300多年前投江的屈原。但你知道端午節及其活動原先都與屈原毫無關係嗎?這是怎麼回事呢? 本文深入探討端午節設立初衷、粽子、龍舟競渡與屈原自沉四者。看完這篇文章,你就會對端午、粽子、龍舟和屈原的四角關係有新的認識喔。那就讓我們一起解開謎團吧!
Thumbnail
這篇內容,將會講解什麼是「switch」,以及與「switch」相關的知識。包括switch的簡介、switch、break。
Thumbnail
這篇內容,將會講解什麼是「switch」,以及與「switch」相關的知識。包括switch的簡介、switch、break。
Thumbnail
※ 什麼是路由? 當我們說「路由」時,可能是在談論路由器(實體設備),也可能是在談論路由(選擇路徑的過程),或者是在談論路徑(資料封包的傳輸路徑)。 路由器 (Router):這是一種實體設備,負責將資料封包 (Packet) 從一個網路傳送到另一個網路。它的工作方式類似於交通指揮,確保資料封包
Thumbnail
※ 什麼是路由? 當我們說「路由」時,可能是在談論路由器(實體設備),也可能是在談論路由(選擇路徑的過程),或者是在談論路徑(資料封包的傳輸路徑)。 路由器 (Router):這是一種實體設備,負責將資料封包 (Packet) 從一個網路傳送到另一個網路。它的工作方式類似於交通指揮,確保資料封包
Thumbnail
這篇文章介紹了路由器 (Router) 在網絡硬體中的功能與運作概念,包括路由器的工作原理、運作流程和與其他硬體設備的區別。文章也提及了路由器運作的基本概念,例如路由表的建立方式和路由協定的基礎知識。
Thumbnail
這篇文章介紹了路由器 (Router) 在網絡硬體中的功能與運作概念,包括路由器的工作原理、運作流程和與其他硬體設備的區別。文章也提及了路由器運作的基本概念,例如路由表的建立方式和路由協定的基礎知識。
Thumbnail
上篇我們已經把風格融入在一個網路之中,實現了訓練一次就可以轉換不同的圖片成我們訓練的風格,但是這樣還不夠,因為這樣每個風格都得訓練一個網路來轉換,太浪費了,那麼,我們有沒有辦法在同一個網路中訓練多個風格呢?
Thumbnail
上篇我們已經把風格融入在一個網路之中,實現了訓練一次就可以轉換不同的圖片成我們訓練的風格,但是這樣還不夠,因為這樣每個風格都得訓練一個網路來轉換,太浪費了,那麼,我們有沒有辦法在同一個網路中訓練多個風格呢?
Thumbnail
觀察者模式透過主題訂閱/訊息通知的機制,極度增強系統的可擴展性、靈活性以及降低組件間的耦合度。概念直觀簡單,是非常實用的設計模式。
Thumbnail
觀察者模式透過主題訂閱/訊息通知的機制,極度增強系統的可擴展性、靈活性以及降低組件間的耦合度。概念直觀簡單,是非常實用的設計模式。
Thumbnail
代理模式通過封裝原始對象來實現對該對象的控制和管理,同時不改變原始對象的行為或客戶端與該對象互動的方式,以此介入或增強對該對象的訪問和操作。
Thumbnail
代理模式通過封裝原始對象來實現對該對象的控制和管理,同時不改變原始對象的行為或客戶端與該對象互動的方式,以此介入或增強對該對象的訪問和操作。
Thumbnail
策略模式將多種演算法封裝於獨立的策略類別中,每個策略類別都實現了一個共同的介面。這種設計允許使用者在系統運行時動態選擇和切換演算法,以達成相同的目的。
Thumbnail
策略模式將多種演算法封裝於獨立的策略類別中,每個策略類別都實現了一個共同的介面。這種設計允許使用者在系統運行時動態選擇和切換演算法,以達成相同的目的。
Thumbnail
這篇要使用IPAdapter搭配遮罩來進行特殊的構圖方式。
Thumbnail
這篇要使用IPAdapter搭配遮罩來進行特殊的構圖方式。
Thumbnail
是否有時遇到一種情況,發現一種似乎有一定勝率的交易技術線型, 想回測時,若軟體沒有提供相關線型回測,就必須自己寫程式來呈現線型,進而回測 然而卻不知道如何用程式的方式將他呈現出來。 今天用XQ來做個簡單分享: 弄清楚運作模式 在懂得基本變數的情況下,最重要的是懂得程式是怎麼運作的, 無
Thumbnail
是否有時遇到一種情況,發現一種似乎有一定勝率的交易技術線型, 想回測時,若軟體沒有提供相關線型回測,就必須自己寫程式來呈現線型,進而回測 然而卻不知道如何用程式的方式將他呈現出來。 今天用XQ來做個簡單分享: 弄清楚運作模式 在懂得基本變數的情況下,最重要的是懂得程式是怎麼運作的, 無
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News