中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中適配器模式的示例分析

發布時間:2021-10-18 10:39:43 來源:億速云 閱讀:89 作者:小新 欄目:編程語言

小編給大家分享一下Java中適配器模式的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

Java程序設計模式系列之適配器模式

理解適配器設計模式需要從生活中的場景進行聯系,在生活當中有那些東西能夠稱為適配器呢?從字面上理解,“適配”的意思就是讓一個東西和另一個東西配對,能夠讓他們一起工作,比如大家用的筆記本電腦就需要用到電源適配器,轉換插口和電流到筆記本上給筆記本電腦進行供電。再比如在國內所有的電器插座都是兩口或三口的國內標準插座,但如果到中國大陸以外的地區旅行,想要使用電源給電子產品供電,就需要轉換插口了。比如王老師到了香港,看到的電源插座是這樣的:

Java中適配器模式的示例分析

很明顯,從國內帶去的手機就無法充電了。

那么這個問題怎么解決呢?

Java中適配器模式的示例分析 

經過查找資料,王老師找到了一種產品,它就是長成這個樣子的東東,叫“電源適器”。

用法相信大家一看就清楚了。

有個它,媽媽再也不用擔心我擔心我沒有電了。

“哦!我知道了,這不是個轉換口嗎?”是的,其實跟讀卡器的概念是一樣的,就是將原本不能用的接口經過適配器轉換成能用的接口。

概念:

適配器模式(Adapter):將一個類的接口,轉換成客戶希望的另一個接口。適配器模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。

“還是沒讀懂!”不要緊,下面簡單易懂的案例+代碼,讓你明白什么是適配器模式。

Java中適配器模式的示例分析 

接下來我們就以電源這個案例來介紹適配器模式:

這里有兩個不兼容的接口,電源A接口和電源B接口,并且有各自相應的實現方法。代碼如下:

Java中適配器模式的示例分析 

Java中適配器模式的示例分析 

那么兩個接口應該有各自的實現類,代碼如下:

Java中適配器模式的示例分析Java中適配器模式的示例分析 

接下來就應該是客戶端來調用了,先定義電源A開始工作方法:

Java中適配器模式的示例分析 

那么想要調用start方法就需要傳入PowerA的實現類對象了。

所以這里我們創建一個PowerAImpl對象,并且調用start方法。

Java中適配器模式的示例分析 

編譯后運行的結果是這樣滴:

Java中適配器模式的示例分析 

我們這里已經寫好了,如果這時我們想傳PowerB接口到start方法可以嗎?怎么辦呢?

那么此時我們有兩種辦法來實現,第一種:

Java中適配器模式的示例分析 

再添加一個startB方法,但這不是一個好的解決方案,因為在startA中調用insert方法的前后我們可能存在一些邏輯以及業務,同樣的在startB中調用connect方法的前后可能存在這些相同的邏輯及業務,就只有connect方法調用這一句不同,那么重寫一份就是多余的了,代碼重復了。不太符合我們面向對象的編程思想,怎么辦呢?往下看。

Java中適配器模式的示例分析 

接下來看第二種解決方案:我們還是想用一個start方法解決這個問題,到這里會有人想到直接把start方法改成適應兩個接口的,王老師在此處需要先給大家說明一個問題了,面向對象的編程原則中有一點非常重要的是“對修改關閉,對擴展開放”,如果我們的程序已經上線運行,當時并沒有考慮要傳PowerB接口進來,只傳PowerA接口就好了,但現在業務修改要求也可以傳PowerB接口,那么修改方法將對其他已寫好的程序造成怎樣的影響也是未知的,可能其他小伙伴調用了你的start方法就會出問題了,也就是說調用了你的start方法的代碼都會有連鎖反應了。OK!看下面!

我們需要實現這樣的東東

Java中適配器模式的示例分析 

很顯然這樣的代碼編譯是不會通過的,因為目前PowerA和PowerB本來就是兩個不同的接口,相當于一個三口的插座和一個兩口的根本插不進入是一樣的。

要想實現轉換,現在需要適配器啦!我們需要把PowerB轉換成PowerA傳進來,那么我們就給PowerA做一個適配器。Java中適配器模式的示例分析

1、首先要適配的是PowerA,所以實現PowerA接口,那么PowerAAdapter就可以作為PowerA的實現類傳進start方法了。

2、我們是要用這個適配器將PowerB轉成PowerA,那么就需要和PowerB取得聯系,所以定義一個PowerB作為屬性,并通過構造方法進行初始化操作。

3、實現了PowerA接口需要重寫其方法,那么在重寫的insert方法中調用PowerB的connect方法,適配器就寫好了。

現在來測試一下:

Java中適配器模式的示例分析 

編譯之后運行結果是這樣滴:

Java中適配器模式的示例分析 

結果說明PowerB接口的實現類開始工作了,但傳參數的時候是通過PowerA接口的形式傳進來進行工作的。這就是神奇的適配器模式啦!

按照步驟敲一敲代碼!更有助于理解!

以上是“Java中適配器模式的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

微山县| 和龙市| 鄂州市| 内丘县| 松江区| 方山县| 沁源县| 奎屯市| 洛隆县| 靖安县| 双辽市| 保山市| 郁南县| 建德市| 灌阳县| 汽车| 太仓市| 隆子县| 文安县| 张掖市| 铜陵市| 南丹县| 拉萨市| 内丘县| 井陉县| 中阳县| 南宫市| 五台县| 桃园县| 贡觉县| 汝城县| 蒙阴县| 尚志市| 南木林县| 弥渡县| 河源市| 延寿县| 大邑县| 望江县| 延长县| 霸州市|