常用的設計模式之橋接模式(Java代碼實現)

2021-01-08 愚公要移山1

我們都去買過手機,手機按照品牌分可以分為華為、小米、oppo、vivo等品牌,如果這些手機按照內存分又可以分為4G、6G、8G等等。假如我們每一種手機都想要玩一下,至少需要4*3個。這對我們來說這些手機也太多了,竟然有12個,最主要的是手機品牌和內存是放在一起的。現在有這樣一種機制,手機牌品商是一個公司,做手機內存的是一個公司,想要做什麼手機我們只需要讓其兩者搭配起來即可。有點類似於全球貿易分工明確的思想,這就是橋接模式,把兩個不同維度的東西橋接起來。

一、認識橋接模式

1、概念

將抽象部分與它實現部分分離,使它們都可以獨立地變化。

2、例子說明

從上面的例子我們可以看到,我們的手機可以從兩個維度進行變化,一個是品牌,一個是內存。此時我們就可以通過橋接模式將這兩個維度分離開來,每一個維度都可以獨立擴展。比如說手機品牌,可以又出現了蘋果、三星、錘子等等。內存方面又可以生產10G、16G的了。從專業的角度來看可以這樣定義橋接模式:

橋接模式是一種很實用的結構型設計模式,如果軟體系統中某個類存在兩個獨立變化的維度,通過該模式可以將這兩個維度分離出來,使兩者可以獨立擴展,讓系統更加符合「單一職責原則」。

3、類圖

上面的例子我們畫一張類圖來表示一下:

基本上意思就是這,也就是我們買手機的時候有兩個維度可供我們選擇:一個是品牌一個是內存。

(1)client:指的是我們買手機的人。

(2)Abstraction(抽象類):指的是手機抽象類

(3)Refined Abstraction(具體類):指的是具體手機品牌

(4)Implementor:在這裡相當於手機的其他組件,內存

(5)ConcreteImplementor:具體的內存型號。

下面我們就使用代碼來實現一下。

二、實現橋接模式

第一步:定義Implementor,這裡定義手機內存接口

第二步:定義ConcreteImplementor,這裡指具體的內存

內存這裡定義了兩種一種是6G,一種是8G

第三步:定義Abstraction手機抽象類

第四步:定義Refined Abstraction(具體的手機品牌)

首先是華為

然後是小米

第五步:測試一下

從代碼就可以看出,購買手機的時候,品牌和內存兩個維度是分開的。下面我們分析一下這個橋接模式

三、分析橋接模式

1、為什麼使用橋接模式不使用繼承呢?

繼承是一種強耦合關係,子類與父類有非常緊密的依賴關係,父類的任何變化 都會導致子類發生變化。因此才使用橋接模式,使用了橋接模式之後,我們的兩個維度就像橋梁一樣被連結了起來。體現了鬆耦合的特性。

2、橋接模式的優點

(1)分離抽象和實現部分:把手機、內存抽象出來。實現與之分離。

(2)鬆耦合:兩個維度分開

(3)單一職責原則:每個維度各幹各的活

關於橋接模式的使用場景我覺得你只需要知道他的思想,然後在遇到問題的時候能夠想到這種模式即可。

OK,今天的文章就到這,如有問題還請批評指正。

相關焦點

  • java 設計模式之橋接模式(六)
    設計模式學習,近期我會把23中設計模式都寫成博客,敬請期待~– 2021/1/9什麼是橋接模式?橋接模式,又叫橋梁模式,將抽象部分與它實現部分分離,使它們都可以獨立地變化。百度百科使用場景當我們發現類有多層繼承時就可以考慮使用橋接模式,用聚合代替繼承。
  • C#深究.net常用的23種設計模式之橋接模式(Bridge Pattern)
    然而使用橋接模式可以很好地解決這個問題,下面讓我具體看看橋接模式是如何實現的。二、橋接模式的詳細介紹2.1 定義橋接模式即將抽象部分與實現部分脫耦,使它們可以獨立變化。對於上面的問題中,抽象化也就是RemoteControl類,實現部分也就是On()、Off()、NextChannel()等這樣的方法(即遙控器的實現),上面的設計中,抽象化和實現部分在一起,橋接模式的目的就是使兩者分離,根據面向對象的封裝變化的原則,我們可以把實現部分的變化(也就是遙控器功能的變化)封裝到另外一個類中,這樣的一個思路也就是橋接模式的實現,大家可以對照橋接模式的實現代碼來解決我們的分析思路
  • 「設計模式自習室」橋接模式 Bridge Pattern:處理多維度變化
    【設計模式自習室】建造者模式【設計模式自習室】原型模式【設計模式自習室】透徹理解單例模式【設計模式自習室】理解工廠模式的三種形式【設計模式自習室】適配器模式【設計模式自習室】裝飾模式結構型——橋接模式
  • 設計模式——橋接模式
    應用設計模式 橋接模式(Bridge)來做;先看一下類結構圖: 其實這樣的擔心是沒有必要的,因為這種耦合性是由於對象的創建所帶來的,完全可以用創建型模式去解決。在應用時結合創建型設計模式來處理具體的問題。
  • Java設計模式學習總結:橋接模式
    相關連結 橋接模式(Bridge Pattern):將抽象部分與它的實現部分分離,使它們都可以獨立地變化。如果系統中某個類存在兩個獨立變化的維度,通過該模式可以將這兩個維度分離出來,使兩者可以獨立擴展。
  • Java設計模式之工廠設計模式
    工廠模式是Java中最常用的設計模式之一。 這種類型的設計模式屬於創建模式,因為此模式提供了創建對象的最佳方法之一。在工廠模式中,我們沒有創建邏輯暴露給客戶端創建對象,並使用一個通用的接口引用新創建的對象。
  • 最全Java設計模式之工廠模式
    工廠模式是Java中最常用的設計模式之一。這種類型的設計模式屬於創建模式,因為此模式提供了創建對象的最佳方法之一。在Factory模式中,我們創建對象而不將創建邏輯暴露給客戶端使用通用接口引用新創建的對象。
  • 設計模式之門面模式(Java實現)
    設計模式之門面模式(Java實現)小王今天挺勤奮,在認證的寫著代碼,這時領導電話來了,小王啊到我辦公室來一趟。小王心裡忐忑著走進了辦公室。我們分析下這個需求,設計類圖如下:設計類圖通過分析,我們需要一個項目的抽象接口和對應的一個具體實現類,還有一個PM類來處理項目中的其他事情,代碼實現如下:
  • java 23種設計模式及其在spring,tomcat,jdk中的應用
    這時可能需要修改原有代碼,可能會影響到原有的功能。解決方案:儘量通過擴展現有代碼來實現變化,而不是修改現有代碼。優點:可提高系統的可維護性,可以靈活擴展。2. 設計模式分類一般地設計模式分為三類共23種:2.1. 創建型模式單例模式、抽象工廠模式、建造者模式、工廠模式、原型模式。2.2.
  • 設計模式系列之享元模式(java代碼實現)
    這裡面其實是使用了單例模式的。(2)抽象享元(Book):定義需要共享的對象業務接口。享元類被創建出來總是為了實現某些特定的業務邏輯.(3)具體享元(ConcreteBook):實現抽象享元類的接口,完成某一具體邏輯。在這裡表示可以被借出。在這裡享元工廠是享元模式的核心,它需要確保系統可以共享相同的對象。
  • JAVA學習之23種設計模式的完整實例代碼
    設計模式的分類  總體來說設計模式分為三大類:  創建型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。  結構型模式,共七種:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。  行為型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式。
  • 使用Java API在Jedis中實現DAO設計模式
    在本文中,我們將學習Jedis Java客戶端中的DAO設計模式和實現。DAO模式被實現為客戶端應用程式和資料庫之間的一層。客戶端應用程式不必依賴基礎資料庫交互API(低級)。Redis and Jedis在 Windows 上安裝 Redis在 Windows 上安裝 Eclipse創建 Maven 項目創建 SiteDaoRedisImplTest.java
  • 設計模式之單例模式
    最近項目上不是很忙,偶爾加下班,下班除了帶下娃,基本上也能挪出一些時間來了,所以,想著抽空學習整理下設計模式相關的概念,方便之後自己查閱。 今天就從第一個單例模式開始,一個常見的,相對也最簡單的一個。概念單例模式是一種創建型模式(關於創建型模式,文後會簡單說明)。單例就是確保一個類只有一個實例,並且只提供一個訪問該實例的全局訪問點。實現將構造方法私有化。
  • 「設計模式」Bridge(橋接模式)
    橋接模式基本介紹將抽象部分與它的具體實現部分分離,使它們都可以獨立地變化。通過組合的方式建立兩個類之間的聯繫,而不是繼承適用場景一個類存在兩個(或多個)獨立變化的維度,且這兩個(或多個)維度都需要獨立進行擴展模式特點分離抽象部分及其具體實現部分提高了系統的可擴展性如果你還想學習其他設計模式,請參考我的另一篇文章
  • 重學Java 設計模式:實戰外觀模式
    目錄一、前言二、開發環境三、外觀模式介紹四、案例場景模擬1. 場景模擬工程2. 場景簡述五、用一坨坨代碼實現1. 工程結構2. 代碼實現六、外觀模式重構代碼1. 工程結構2. 代碼實現3.一般情況下對於外觀模式的使用通常是用在複雜或多個接口進行包裝統一對外提供服務上,此種使用方式也相對簡單在我們平常的業務開發中也是最常用的。你可能經常聽到把這兩個接口包裝一下,但在本例子中我們把這種設計思路放到中間件層,讓服務變得可以統一控制。1.
  • 設計模式之策略模式(Java實現例子說明)
    設計模式之策略模式小王在和同事正在吹牛時,領導過來了,小王啊,你又在吹牛了?別吹了,幹點正活,下周要去春遊,你給出幾種方案。小王一聽去旅遊,屁顛屁顛地去幹活了。這個其實就是一個設計模式,叫做策略模式。策略模式(Strategy Pattern):定義一組算法,將每個算法封裝起來,並且使他們之間可以互換。策略模式是一個簡單的模式也叫做政策模式。
  • 程式設計師的「九陽神功」——設計模式
    下面我們就來認識下九陽神功的基礎功之——設計模式01.設計模式是什麼?設計模式(Design pattern)簡單來說就是在軟體工程中,我們的前輩們在程序不斷開發的過程中為了可以實現代碼重用、可擴展、保證代碼可讀性和可靠性、提高我們的開發和維護效率,而總結出了一套被反覆使用、多數人知曉的、經過分類編目的代碼設計經驗(讓我們少走彎路)。
  • 設計模式:橋接模式和裝飾模式
    一、橋接模式簡介1、基礎描述橋梁模式是對象的結構模式。又稱為柄體(Handle and Body)模式或接口(Interface)模式。橋梁模式的用意是「將抽象化(Abstraction)與實現化(Implementation)脫耦,使得二者可以獨立地變化」。
  • JAVA設計模式總結之23種設計模式萬字詳解
    一、什麼是設計模式 設計模式(Design pattern)是一套被反覆使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。毫無疑問,設計模式於己於他人於系統都是多贏的,設計模式使代碼編制真正工程化,設計模式是軟體工程的基石,如同大廈的一塊塊磚石一樣。項目中合理的運用設計模式可以完美的解決很多問題,每種模式在現在中都有相應的原理來與之對應,每一個模式描述了一個在我們周圍不斷重複發生的問題,以及該問題的核心解決方案,這也是它能被廣泛應用的原因。
  • 「開源推薦」設計模式Java實現方案
    前言你是否對設計模式多次學習而不得要領?是否看了N多資料覺得不知如何下手?本系列為你推薦最優秀的設計模式開原始碼,供你參考!設計模式實現連載是編程進入中高級別的必經之路,作者通過近百個項目的研究和對比,也結合自己的經驗,經過一個多月的找出綜合質量比較高的推薦給大家,方便大家下載源碼學習。