在前面一篇博客中介紹了“命令模式”(Command Pattern),今天博客的主題是“適配器模式”(Adapter Pattern)。適配器模式用處還是比較多的,如果你對“適配器模式”理解呢,那麼自然而然的就會知道其使用場景。今天這篇博客我們就舉一個生活中的使用適配器模式的示例,然後將該示例使用代 ...
在前面一篇博客中介紹了“命令模式”(Command Pattern),今天博客的主題是“適配器模式”(Adapter Pattern)。適配器模式用處還是比較多的,如果你對“適配器模式”理解呢,那麼自然而然的就會知道其使用場景。今天這篇博客我們就舉一個生活中的使用適配器模式的示例,然後將該示例使用代碼進行表示出來,那麼我們所實現的代碼使用的設計模式就是我們今天所說的“適配器模式”。
“適配器”其實說白了就是一個轉接頭,比如Mac Book Pro 要接外接顯示器,如果你沒有HDMI傳輸線的話,那麼你就得使用轉接頭作為中間件來連接外接顯示器。你觀察各種“轉接頭”他們都有一個共同的特點,就是轉接頭兩端的介面肯定是不一樣的。其實上面我說了句廢話了,如果轉接頭的兩端一致那麼就是傳輸線了就不是轉接頭了。其實我們今天所要介紹的“適配器模式”就來源生活中的各種適配器。適配器說白了,其職責就是將一種介面轉換成另一種介面。下方是生活中常見的適配器。
上面說這麼多了,那麼讓我們來看一下“適配器模式”的定義吧,下方是適配器模式的定義:
適配器模式:將一個類的介面,轉換成客戶期望的另一個介面。適配器讓原本介面不相容的類可以合作無間
接下來我們就拿生活中的一個示例來真正的感受一下適配器模式。作為一個Programer你肯定使用過筆記本電腦,在此就使用MacBook Pro的電源適配器來做類比。MacBook Pro中接入外接電源時需要電源適配器的,接下來我們就使用代碼來實現插座,適配器以及MacBook Pro和其自帶電池間的關係。
一、電源適配器中的類圖
接下來我們將給出MacBook Pro電源適配器中的使用代碼表示的類圖,也就是我們使用“適配器模式”來設計電源適配器時所使用的類圖。下方就是我們所使用的類圖,總體看來下方的類圖分為三個模塊,左邊的紅框是我們的插座,中間的黃框是我們的電源適配器,右邊的綠框就是我們經常使用的筆記本電腦了。在筆記本電腦中帶有電池,MacBook Pro使用自帶電池是不需要適配器的,因為該電池在設計之初就是為其設計的。但是如果MacBook Pro的電池沒有電了,我們就需要為其接入外部電源。因為外部電源是多種多樣的,電壓電流都有所不同,不能直接給MacBook Pro供電,所以需要電源適配器來為MacBook Pro供電。下圖中黃色的就是我們的電源適配器,也是適配器模式的核心。依次給出了每個模塊的的介紹,如下所示:
在下方類圖中的紅色部分就是我們模擬插座的模塊。在該模塊中含有一個SocketType協議,該協議是Socket(插座)的一種規範,在此我們可以暫且理解為插座的國標。其中定義了插座的統一規範,只給出了聲明沒有實現(只給出了插座的尺寸,沒有給出如何生產插座)。我們要實現的Socket都遵循於SocketType協議,也就是說在中國生產的插座要符合中國國標,在美國生產的插座當然要符合美國的國標,當然這兩者的插座標準有可能是一樣的。紅框中就模擬了我們的插座。
接下來我們來看一下綠框中的內容。綠框中就是我們的MacBook Pro,其中也有個協議,名為ComputerPowerSourceType。該協議是筆記本電腦