適配器模式在Android開發(fā)中的應用

作者簡介? 原創(chuàng)微信公眾號郭霖 WeChat ID: guolin_blog

本篇來自再看就點爆的投稿耀石,通過實際項目給大家分析了適配器模式遵班,希望對大家有所幫助寥掐。

再看就點爆的博客地址:

http://blog.csdn.net/u010618194

前言

適配器:Adapter最岗,大家看到這個單詞是不是非常眼熟了蛔六?沒錯,這就是我們平時用到 ListView 和 RecyclerView 時必定會配合使用的 Adapter废亭。列表顯示數據幾乎是任何一個安卓項目都會用到的一個功能国章,谷歌使用適配器模式來封裝等使之異常靈活且非常實用,我們想要了解谷歌為什么這樣做豆村,就要先理解Java適配器模式是怎樣運作的液兽,這篇文章我們就學習一下java設計模式之一的適配器模式以及它在安卓中的應用。

適配器模式

使用場景:適配器模式把一個類的接口變換成客戶端所期待的另一種接口掌动,從而使原本因接口不匹配而無法在一起工作的兩個類能夠在一起工作四啰。

引用網上的一個例子:筆記本電腦電源一般用的都是5V電壓,但是我們的家用電是220V粗恢,我們要讓筆記本充上電柑晒,最好的辦法應該是通過一個工具把220V的電壓轉換成5V,這個工具就是適配器

好好理解一下設計模式的使用場景比起去記住代碼是怎樣寫的效果要好很多眷射,說不定你哪天編碼的時候靈光一現用上了匙赞,那就是你真正掌握了佛掖。

適配器模式的種類

1. 類適配器

UML圖(強烈建議大家去了解一下UML圖,它很簡單粗暴的把類與類之間的關系描述的很清楚易懂)


我們可以看到涌庭,目標接口 Target 就相當于是上面的5V電壓芥被,Adaptee 就是被適配的220V電壓,Adapter 就是適配器坐榆∷┢牵看代碼:


輸出結果:

充5V電啦

充220V電啦

結合上面給點UML圖稍微分析一下:

Adapter類 繼承了 Adaptee220V類 然后實現了接口 Target5V 并實現了目標方法 chong5V(),類適配器的一個特點就是 Adapter 會去繼承被適配類席镀,這樣適配器就直接擁有了被適配類中的方法匹中,所以類適配器的缺點就是不夠靈活,讓我們看一下另外一種適配器愉昆。

2. 對象適配器


UML圖

這里的 Target 依然是 5V電壓职员,Adaptee 依然是 220V電壓,比起類適配器跛溉,Adapter 和 Adaptee 的關系從繼承變成了組合焊切,上代碼:


輸出結果:

充5V電啦

充220V電啦

這里我們把 Adaptee220V 通過 Adapter 的構造方法傳入到 Adapter 中,當調用 Adapter 的 chong220V()方法 時芳室,實際是調用傳進來 Adaptee220V 對象的 chong220V 方法专肪,這樣就會變得很靈活。

項目中的運用

之所以寫這篇關于適配器設計模式的文章堪侯,是因為作者在以前有一次實際開發(fā)中嚎尤,在沒有學習過適配器模式的前提下,為了解決項目中的一個開發(fā)痛點伍宦,自己費勁腦筋想出來的一種模式芽死,到現在才知道原來這個叫適配器模式,在學習了這個設計模式之后更加深入了解了一下次洼。接下來关贵,就來演示一下作者在實際工作中使用到的變異形態(tài)的對象適配器模式。

當時開發(fā)場景:當時作者開發(fā)一個基于POS機的APP卖毁,APP要求有打印功能揖曾,像訂單打印、日期打印等等亥啦。我們知道POS機是有多種型號的炭剪,每種型號的POS機會有他們單獨的SDK,也就是說打印方法是不同的翔脱!


首先奴拦,我們每次調用打印的時候都會先判斷 POS機 型號,因為型號不對程序肯定會報錯届吁,假如某一天粱坤,APP適配的 POS機 類型要增加一款隶糕,也就是說我每個判斷 POS機 型號的地方都要多家一個if語句,并且還要把 新POS機型 的打印方法加上去站玄,如果我有5個地方用到了打印枚驻,就要加5次,這樣是很痛苦的株旷,別問我為什么知道再登。。晾剖。經過2次這樣的真實情況發(fā)生后锉矢,我暴走了,痛定思痛要想個辦法結局齿尽,于是有了以下代碼:


每種?POS機 都實現 IPrint 中的打印方法:


這里我把?POS機 型號判斷的代碼放到了 PrintManager 的構造方法中沽损,每次new出實例時就會去判斷。然后我讓 PrintManager 也實現了IPrint接口循头,因為我認為項目中的打印管理類必須要擁有這三種打印方法绵估。


發(fā)現沒,改過之后的代碼卡骂,在不同的調用的地方再也不用擔心新增POS機型需要改代碼了国裳,只需要在 PrintManager 的構造方法中增加一個判斷就好了。要是改成單例:


改完之后我哭了全跨。缝左。。我他嗎的是個天才啊浓若。渺杉。。后面果然加了多款POS機挪钓,但是我再也不痛苦了是越!看一下我的UML圖:


其實,光看UML圖诵原,作者在項目中的這種寫法已經不算是適配器模式了英妓,因為 Adaptee 已經直接實現了Target中的方法挽放,也就是說根本就不存在不滿足目標接口這個說法了绍赛。。不過作者這樣寫完全是自己想出來的辑畦,沒有基于任何設計模式吗蚌,就現在目前的效果來說還是不錯的,通過這篇文章纯出,我對于適配器模式有了一個清晰的理解蚯妇,同時也反思了一下我這種寫法敷燎,還是很有收獲的。


文章原創(chuàng)作者GuoLin 書籍推薦

郭林大神原創(chuàng)android 書籍:《第一行代碼 android》

淘寶鏈接: https://s.click.taobao.com/t?e=m%3D2%26s%3DgKUfuKdAZKocQipKwQzePOeEDrYVVa64K7Vc7tFgwiHjf2vlNIV67p2n%2BQBNMyE6Rku8%2Bpj6eJall3bs%2B3NRhNHnsKI%2BqxhyM0iVZhTFBom4YIorMPnmg8G0g2OJi%2FzmXHfenomYtn5EW9vzeG8LzfPUwktUBEmkxg5p7bh%2BFbQ%3D&pvid=10_106.6.161.154_3367_1490163222155

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末箩言,一起剝皮案震驚了整個濱河市硬贯,隨后出現的幾起案子,更是在濱河造成了極大的恐慌陨收,老刑警劉巖饭豹,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異务漩,居然都是意外死亡拄衰,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門饵骨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來翘悉,“玉大人,你說我怎么就攤上這事居触⊙欤” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵饼煞,是天一觀的道長源葫。 經常有香客問我,道長砖瞧,這世上最難降的妖魔是什么息堂? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮块促,結果婚禮上荣堰,老公的妹妹穿的比我還像新娘。我一直安慰自己竭翠,他們只是感情好振坚,可當我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著斋扰,像睡著了一般渡八。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上传货,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天屎鳍,我揣著相機與錄音,去河邊找鬼问裕。 笑死逮壁,一個胖子當著我的面吹牛,可吹牛的內容都是我干的粮宛。 我是一名探鬼主播窥淆,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼卖宠,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了忧饭?” 一聲冷哼從身側響起扛伍,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎词裤,沒想到半個月后蜒秤,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡亚斋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年作媚,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片帅刊。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡纸泡,死狀恐怖,靈堂內的尸體忽然破棺而出赖瞒,到底是詐尸還是另有隱情女揭,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布栏饮,位于F島的核電站吧兔,受9級特大地震影響,放射性物質發(fā)生泄漏袍嬉。R本人自食惡果不足惜境蔼,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望伺通。 院中可真熱鬧箍土,春花似錦、人聲如沸罐监。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽弓柱。三九已至沟堡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間矢空,已是汗流浹背航罗。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留妇多,地道東北人伤哺。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓燕侠,卻偏偏與公主長得像者祖,于是被迫代替她去往敵國和親立莉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內容