亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

軟件設計模式之適配器模式(JAVA)

2019-11-14 21:03:26
字體:
來源:轉載
供稿:網友
軟件設計模式之適配器模式(java)

什么是適配器模式?

在計算機編程中,適配器模式(有時候也稱包裝樣式或者包裝)將一個類的接口適配成用戶所期待的。適配器能將因為接口不兼容而不能在一起工作的類工作在一起,做法是將類自己的接口包裹在一個已存在的類中。

實現適配器的方式?

①對象適配器模式-- 在這種適配器模式中,適配器容納一個它包裹的類的實例。在這種情況下,適配器調用被包裹對象的物理實體。②類適配器模式-- 這種適配器模式下,適配器繼承自已實現的類(一般多重繼承)。理論性的東西看起來就是比較煩,下面來舉個日常的小例子來更好的了解適配器吧圖1:三相插頭                 圖2:二孔插座            圖3:三相插頭轉二相的轉換器            看完上面三幅圖,我想大家應該都一目了然了,想把三相插頭插到二孔插座里,只能中間加個轉換器,這里我們可以簡單把它理解成我們今天要說的適配器再回過頭看看文章開始的這句話"適配器能將因為接口不兼容而不能在一起工作的類工作在一起",沒錯,在兩個原本不能工作到一起的組件中間添加適配器,就可以把它們關聯起來了。適配器模式里面存在著3種角色:1、目標角色(Target):也就是客戶理想中想要的接口,比如三相插頭,客戶想找的插孔就是三孔插座(目標角色)。2、源(Adatee):現有的接口,也就是不滿足客戶想要的接口,也就是這個二孔插座(源)。3、適配器(Adapter):能將二孔插座轉換成"三孔插座"的組件,也就是上圖的三相插頭轉二相插頭轉化器(適配器)。就以上面的例子,用代碼來講下適配器模式吧首先先來說下對象適配器模式以筆記本通電為例,大家都知道正常的筆記本電源是三相接口ThreeSocket.java這是一個需求接口,也就是客戶期待的,也就是3種角色中的目標接口(Target)
1 package com.lcw.adapter.test;2 3 public interface ThreeSocket {4     5     //需要一個三孔插座,也就是客戶的需求6     public void needThreeSocket();7 8 }

TwoSocket.java

這是現有的組件,也就是那個二孔插座,也就是3種角色中的源(Adatee),雖然能通電,但接口是不滿足客戶的需要

1 package com.lcw.adapter.test;2 3 public class TwoSocket {4     // 現有的插座,只有二孔,已經有了供電功能,只是缺少了三孔接口5     public void serverTwo() {6         System.out.

ThreeToTwoAdapter.java

這是適配器類,它需要2孔插座來提供電,并實現三孔插座,在構造方法中傳入現有組件2孔插座的對象(帶電)

 1 package com.lcw.adapter.test; 2  3 public class ThreeToTwoAdapter implements ThreeSocket{ 4     private TwoSocket socket; 5     public ThreeToTwoAdapter(TwoSocket two) { 6         this.socket=two; 7     } 8     //現在已經有2孔插座的對象(意味著有通電功能) 9     @Override10     public void needThreeSocket() {11         socket.serverTwo();12         System.out.println("二孔接口已轉換成三孔接口,并注入電");13     }14     15 }

這樣一來,適配器類這個中間類就有了源(二孔插座)的效果也就是"電"

然后再實現了目標接口方法,也就是開通了三相接口,把"電"注入,這樣就可以把2個本無法一起工作的類聚集到一起,類似紅娘在它們之間牽了一條關系線

Computer.java 筆記本類,它需要的是三孔接口

 1 package com.lcw.adapter.test; 2  3 public class Computer { 4     //筆記本電腦的電源插頭需求是3孔 5     private ThreeSocket three; 6     public Computer(ThreeSocket three){ 7         this.three=three; 8     } 9     public void server(){10         System.out.println("筆記本通電成功!");11     }12     13 }

來寫個測試類

 1 package com.lcw.adapter.test; 2  3 public class Test { 4     public static void main(String[] args) { 5         //現有插座兩孔,已經有提供電的功能,只是缺少3孔接口 6         TwoSocket two=new TwoSocket(); 7         //把具有通電功能的對象傳遞進去,目的是要開通3孔接口的通電功能 8         ThreeSocket three=new ThreeToTwoAdapter(two); 9         //得到一個滿足筆記本電源接口且具有電的功能對象10         Computer computer=new Computer(three);11         three.needThreeSocket();12         computer.server();13     }14 }

看下效果圖:

好了,這樣就把2個原本不能在一起工作的類鏈接到一起了。

接著來說下類適配器模式

類適配器顧名思義不同點在于適配器,既然突出了'類",我們一般都會聯想到繼承

嗯,沒錯,類適配器的做法就是讓適配器去繼承已有功能(二孔插座)的類,然后再實現期望接口(三孔插座)

具體看代碼吧,除了測試類和適配器類,其他的類與上面的保持一致,這里就不再貼出

ThreeToTwoExtendsAdapter.java(適配器類)

1 package com.lcw.adapter.test;2 3 public class ThreeToTwoExtendsAdapter extends TwoSocket implements ThreeSocket{4     public void needThreeSocket() {5         this.serverTwo();6         System.out.println("二孔接口已轉換成三孔接口");7     }8     9 }

Test.java(測試類)

 1 package com.lcw.adapter.test; 2  3 public class Test { 4     public static void main(String[] args) { 5         //由于ThreeToTwoExtendsAdapter繼承了源,所以具有源的功能(電),并實現了3孔接口 6         ThreeSocket socket=new ThreeToTwoExtendsAdapter(); 7         //插入接口 8         Computer computer=new Computer(socket); 9         socket.needThreeSocket();10         computer.server();11     12     }13 }

效果依舊:

總結下:

①對象適配模式:

把"被適配者"作為一個對象組合到適配器中,以修改目標接口包裝被適配者。

(例如上面例子,二孔插座就是被適配者,把對象傳入適配器并實現接口方法改造)

②類適配模式:

通過多重繼承和實現接口的方式,單一的為某個類而實現適配。

適配器的作用?

1、透明:通過適配器客戶端可以調用統一接口,對于客戶端是透明的,這樣做可以更加簡潔, 直接,緊湊。

2、復用:復用了現存的類,解決因環境要求不一致的問題。

3、低耦合:將目標類與源類解耦,引入一個適配器重用源類(適配器類),遵守開放-關閉原則。

作者:Balla_兔子出處:http://www.49028c.com/lichenwei/本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。正在看本人博客的這位童鞋,我看你氣度不凡,談吐間隱隱有王者之氣,日后必有一番作為!旁邊有“推薦”二字,你就順手把它點了吧,相得準,我分文不收;相不準,你也好回來找我!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美高清在线视频观看不卡| 国产精品欧美在线| 国产欧美精品一区二区三区-老狼| 欧美成人午夜激情在线| 亚洲精品国产精品久久清纯直播| 中文字幕精品一区久久久久| 欧美最猛性xxxxx免费| 97国产精品免费视频| 不卡av在线网站| 久久久999精品免费| 午夜精品久久久99热福利| 亚洲欧洲在线播放| 色午夜这里只有精品| 日韩av在线一区二区| 国产日韩换脸av一区在线观看| 日韩美女视频免费在线观看| 日韩精品高清视频| 欧美美女操人视频| 岛国视频午夜一区免费在线观看| 精品久久香蕉国产线看观看gif| 国产精品久久久久久久久久ktv| 青青a在线精品免费观看| 亚州成人av在线| 欧美网站在线观看| 国产精品久久久久久久天堂| 日韩欧美极品在线观看| 成人免费在线视频网站| 国产精品久久综合av爱欲tv| 亚洲一区二区三区香蕉| 欧美电影免费在线观看| 久久在线精品视频| 91久久精品久久国产性色也91| 久久久久久一区二区三区| 精品国产老师黑色丝袜高跟鞋| 国产精品电影久久久久电影网| 欧美日韩亚洲一区二区三区| 亚洲第一av网| 久久理论片午夜琪琪电影网| 美日韩在线视频| 亚洲最新在线视频| 亚洲石原莉奈一区二区在线观看| 久久伊人91精品综合网站| 亚洲欧洲日产国码av系列天堂| 成人中文字幕在线观看| 国语对白做受69| 久久亚洲精品视频| 欧美成人国产va精品日本一级| 狠狠综合久久av一区二区小说| 尤物yw午夜国产精品视频明星| 日韩中文av在线| 中文字幕欧美精品日韩中文字幕| 538国产精品视频一区二区| 欧美亚洲免费电影| 国产精品综合网站| 亚洲xxxx妇黄裸体| 4p变态网欧美系列| 亚洲精品一区久久久久久| 欧美性猛交xxxx富婆弯腰| 国产精品香蕉在线观看| 成人黄色在线观看| 亚洲第一福利网站| 国产精品电影在线观看| 中文字幕av一区二区| 亚洲图片制服诱惑| 久久国产精品影片| 日韩综合视频在线观看| 久热精品视频在线免费观看| 亚洲欧美日韩高清| 欧美日韩在线看| 欧美日韩久久久久| 91免费人成网站在线观看18| 色先锋资源久久综合5566| 97超级碰在线看视频免费在线看| 91国自产精品中文字幕亚洲| 国产在线视频2019最新视频| 26uuu国产精品视频| 一本一道久久a久久精品逆3p| 欧美亚洲国产精品| 久久精品男人天堂| 日韩中文字幕免费看| 精品久久中文字幕久久av| 久久精品电影网站| 国内精久久久久久久久久人| 国产精品色婷婷视频| 久久影院资源网| 怡红院精品视频| 蜜臀久久99精品久久久无需会员| 久久久久久久久国产精品| 精品国产乱码久久久久久天美| 国产在线精品成人一区二区三区| 韩国视频理论视频久久| 成人免费网站在线| 日韩视频免费看| 欧美激情亚洲精品| 亚洲欧美中文日韩v在线观看| 欧美性69xxxx肥| 中文字幕欧美国内| 欧美亚洲另类制服自拍| 国产精品露脸av在线| 久久久影视精品| 成人精品久久一区二区三区| 日韩精品在线影院| 日韩av片免费在线观看| 精品中文字幕在线观看| 国产视频999| 在线观看国产成人av片| 欧美精品在线免费观看| 精品国产欧美一区二区五十路| 日韩av综合网| 色视频www在线播放国产成人| 免费av在线一区| 国产精品久久久久久av| 精品久久久久久中文字幕大豆网| 欧美www视频在线观看| 欧美一区二区三区精品电影| 九九视频这里只有精品| 欧美孕妇孕交黑巨大网站| 91av网站在线播放| 国产精品r级在线| 欧美一二三视频| 欧美高跟鞋交xxxxxhd| 日韩欧美在线视频观看| 亚洲码在线观看| 国产啪精品视频| 国产91在线视频| 26uuu另类亚洲欧美日本老年| 久久人人爽亚洲精品天堂| 亚洲97在线观看| 日韩电影中文 亚洲精品乱码| 国产精品爱久久久久久久| 中文字幕日韩欧美| 亚洲国产97在线精品一区| 91久久精品久久国产性色也91| 久久久亚洲影院你懂的| 成人黄色免费看| 亚洲丝袜在线视频| 日韩在线免费观看视频| 欧美日韩国产第一页| 热久久视久久精品18亚洲精品| 国产精品高清免费在线观看| 亚洲欧美中文字幕在线一区| 91sao在线观看国产| 欧美与欧洲交xxxx免费观看| 亚洲男人天堂古典| 国产日产欧美a一级在线| 欧美一级黄色网| 丝袜情趣国产精品| 国产精品久久久久久久久久ktv| 久热精品在线视频| 国产精品中文字幕在线观看| 国产国产精品人在线视| 国产69精品99久久久久久宅男| 97欧美精品一区二区三区| 亚洲国产精品久久久久久| 日韩少妇与小伙激情| 成人欧美在线观看| 亚洲欧美综合图区| 久久91亚洲人成电影网站| 国内揄拍国内精品少妇国语| 日韩av中文字幕在线| 亚洲成色777777在线观看影院| 欧美国产视频日韩| 亚洲精品久久久久久久久久久久久| 亚洲国产成人久久综合一区|