Java23種設計模式——7.結構型模式之適配器模式

Java中除去有設計原則之外,還有23中設計模式。

這些模式都是前輩們一點一點積累下來,一直在改進,一直在優化的,而這些設計模式可以解決一些特定的問題。

並且在這些模式中,可以說是將語言的使用體現的淋漓盡致。

那我們今天要學習  結構型模式  中的  適配器模式  !

適配器模式

直接百度百科走起

通過百科,我們知道了適配器模式也有時候叫做包裝樣式或者包裝,這個東西能幹啥,舉個栗子。

好比你現在去了國外,但是不會說外語,這時候你就得需要一個翻譯官,而這個翻譯官就是適配器。再有就是電腦充電,電腦充電是使用的直流電進行充電,但問題是你家裏進來的是交流電,這時候,你就得需要一個適配器,將這個交流電轉換成直流電,我們就將這個轉換的裝置叫做適配器。

說了生活中的例子之後,我們再來說一下軟件設計中適配器使用的場景。

就好比你開發組件,你現在項目中需要一個A組件,而你項目中已經有了B組件,但是這個B組件又有些問題,導致和現在的項目不能夠很好地兼容,如果再去從新開發這個B組件還得費時間,這時候,使用適配器模式,將A轉換成B,這樣,你的項目就可以很好地解決B組件不兼容的問題了。

模式的定義與特點

通過上面的瞭解,我們知道了適配器模式是什麼,能幹啥,這裏我們來看一下定義和特點。

定義:

將一個類的接口轉換成客戶希望的另外一個接口,使得原本由於接口不兼容而不能一起工作的那些類能一起工作。

說完定義,在說優缺點之前,我們還得說一個東西

適配器模式分爲類結構型模式和對象結構型模式兩種,前者類之間的耦合度比後者高,且要求程序員瞭解現有組件庫中的相關組件的內部結構,所以應用相對較少些。

優點:

1. 客戶可以通過適配器進行調用目標接口

2. 複用現在已經存在的接口或者類,這樣省的開發人員一次一次的開發了

3. 將目標類和適配者類解耦,解決了目標類和適配者類接口不一致的問題。

缺點:

對類適配器來說,更換適配器的實現過程比較複雜。

模式的結構與實現

雖然說這個適配器模式分爲兩個模式,但是,他們的這個模型結構是一樣的,下面我們給出

1. 目標接口(Target),這個就是當前客戶想要的接口

2. 適配者類(Adaptee),就是就是我們上面說的B這個組件,我們到時候就需要把這個B適配者通過適配器弄成A

3. 適配器類(Adapter),它是一個轉換器,通過繼承或引用適配者的對象,把適配者接口轉換成目標接口,讓客戶按目標接口的格式訪問適配者。

知道了之後,我們挨個進行實現,首先是類結構型模式

類結構型模式

我們先創建一個目標接口,起個名字叫做Target。然後我們弄一個方法,叫play方法,返回一個String類型的值

接着,我們再來弄一個適配者(也就是要被適配的對象,好比上文中說的B這個組件),我們起個名字叫Adaptee。

這裏呢,我們寫一個方法,叫玩籃球的方法,裏面輸出一句話,好好玩。

接着,我們再弄個適配器這個類。創建一個類叫Adapter,並且去實現Target。

當然,這裏不會說返回一個空,這裏我們開始對適配者這個類做處理

做完處理,我們再來弄一個測試類,AdapterTest。我們來實例化一下目標接口。(如果你不知道爲啥要實例化目標接口,說明你沒有好好看這篇文章。)

我們來運行一下,看看結果。

沒有毛病,沒玩成籃球,最後回去寫作業去了。以上就是類結構型模式,它這個就是相當於給之前的弄了一個封裝。

我們再來看對象結構型模式。

對象結構型模式

對象結構型模式,我們只需要修改一下上面的類結構型模式即可

打開Adapter這個適配器類

修改完成之後,我們再來修改一下測試類

好,運行一下

 

OK的,沒有問題,大家好好理解一下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章