設計模式筆記(六)--適配器模式、外觀模式

適配器模式(Adapter Pattern)

將一個類的接口,轉換成客戶期望的另一個接口。適配器讓原本接口不兼容的類可以合作無間。

簡單點說,就是利用適配器將不符合自己期望的接口轉成自己想要的接口。

對象適配器:


類適配器:


還是先看一下背景:對於客戶電腦來說,有一個雙孔插頭,所以需要一個雙孔插座來插上供電,也就是說,需要一個雙孔接口(上圖中的目標接口)。但是,離你最近的插座只有三孔的,那怎麼辦呢,把它換成兩孔的?花錢到是不重要,重要的是有些電器還要用到三孔插座。所以有個“雙孔-三孔適配器”是不是就好了?這個適配器的作用就是讓三孔表現出雙孔的功能,也就是將三孔(被適配者)適配給雙孔(目標接口)。

適配器可以將變化的部分封裝起來,這樣即使變成四孔插座了也只需修改一下適配器就行了,這樣就可以讓客戶從實現的接口解耦了(對於客戶電腦來說,只關心雙孔的插座,它只知道適配器有雙孔插座,不會察覺到被適配者三孔插座的存在,客戶和被適配者就解耦了)。

  • 使用對象組合,以修改的接口包裝被適配者(適配器持有被適配者的引用)
  • 類適配器需要多重繼承來實現,Java中肯定是不行的。使用多繼承代替對象組合。
外觀模式(Facade Pattern)

提供了一個統一的接口,用來訪問子系統中的一羣接口。外觀定義了一個高層接口,讓子系統更容易使用。

簡單點說,就是用一個接口控制各個子系統的接口,從而讓客戶只用這個高層接口就可以達到目的,不用再逐個操作子系統了,從此簡化了接口。

比如說,作爲客戶的我們想看體驗智能家居的看電影功能,我們只需按下遙控器上面的“看電影”按鈕即可,系統會自動進行打開投影儀、關閉燈光、打開音響等子系統的行爲。

外觀模式的根本目的就是簡化接口,而適配器模式的根本目的是轉換接口。

  • “最少知識”原則的指導方針:在該對象的方法內,只應該調用以下範圍內的方法:
    • 該對象本身
    • 被當作方法的參數而傳遞進來的對象
    • 該方法創建或實例化的任何對象
    • 對象的任何組件



發佈了48 篇原創文章 · 獲贊 168 · 訪問量 56萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章