多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > Android 設計模式之適配器模式

Android 設計模式之適配器模式

來源:程序員人生   發布時間:2014-09-27 05:37:22 閱讀次數:2785次

適配器模式的定義是:將一個類的接口,轉換成客戶期望的另一個接口,適配器讓原本接口不兼容的類可以作無間。看下以下兩張圖就更清楚了



適配器可以實現接口的解耦,如果過一段時間后,廠家想改變接口,適配器可以把改變的部分封裝起來,用戶就不需要跟著接口改變而改變,只要改變適配器就行了。

有這樣一個需求:有一個鴨子類和一個火雞類,我想用火雞對象來冒充鴨子,但火雞和鴨子的方法不完全一樣,這時就需要一個轉換器

Duck.java鴨子接口

package com.dzt.adapter; public interface Duck { public void quack(); public void fly(); }
Turkey.java火雞接口

package com.dzt.adapter; public interface Turkey { public void gobble(); public void fly(); }
實現一個鴨子類MallardDuck.java
package com.dzt.adapter; public class MallardDuck implements Duck { @Override public void quack() { // TODO Auto-generated method stub System.out.println("MallardDuck------------------>quack"); } @Override public void fly() { // TODO Auto-generated method stub System.out.println("MallardDuck------------------>fly"); } }
實現一個火雞類WildTurkey.java

package com.dzt.adapter; public class WildTurkey implements Turkey { @Override public void gobble() { // TODO Auto-generated method stub System.out.println("WildTurkey------------------>gobble"); } @Override public void fly() { // TODO Auto-generated method stub System.out.println("WildTurkey------------------>fly"); } }
要想把火雞轉成一個鴨子就要創建一個適配器TurkeyAdapter.java

package com.dzt.adapter; /** * 可以把火雞轉化成鴨子 * * @author Administrator * */ public class TurkeyAdapter implements Duck { Turkey turkey; public TurkeyAdapter(Turkey turkey) { this.turkey = turkey; } @Override public void quack() { // TODO Auto-generated method stub turkey.gobble(); } @Override public void fly() { // TODO Auto-generated method stub for (int i = 0; i < 5; i++) turkey.fly(); } }
由于是要把火雞轉成鴨子,所以需要實現鴨子接口,和鴨子實現類有相同的方法,傳入需要適配的對象(火雞)

測試代碼

package com.dzt.adapter; /** * 使用適配器模式 需求:由于找不到合適的鴨子,只能暫時到火雞來代替鴨子,但鴨子和火雞的方法不一樣,此時就需要用一個”中間人“進行轉換。 * * @author Administrator * @data 2014.08.19 */ public class AdapterModel1 { public static void main(String[] args) { WildTurkey wildTurkey = new WildTurkey(); MallardDuck mallardDuck = new MallardDuck(); Duck adapter = new TurkeyAdapter(wildTurkey); System.out.println("turkey say.................."); wildTurkey.gobble(); wildTurkey.fly(); System.out.println("duck say.................."); mallardDuck.quack(); mallardDuck.fly(); System.out.println("adapter say.................."); adapter.quack(); adapter.fly(); System.out.println("-------------------------------------------------"); } }
這樣在適配器就能使用鴨子類中的方法,這個模式可以降低客戶與系統之間的耦合,更利于程序的可維護性

相關代碼:http://download.csdn.net/detail/deng0zhaotai/7835473

參考書籍:《Head First 設計模式》

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧美e片成 人 在线播放乱妇 | 男女晚上日日麻批视频不挡 | 亚洲欧美日韩久久一区 | 天堂俺去俺来也www久久婷婷 | 精品欧美一区二区精品久久 | 亚洲 欧美综合小说区图片区 | 成人娱乐网 | 亚洲精品国产综合久久一线 | 成人国产在线视频在线观看 | 98自拍视频| 久久影视一区 | 欧美日韩另类国产 | 日韩欧美亚洲一区精选 | 国产日产欧美一区二区三区 | 免费a级特黄国产大片 | 欧美性猛交xxxx免费看手交 | 欧美高清xxxx性 | 国产人成亚洲第一网站在线播放 | 亚洲综合图 | freexx性欧美黑人 | 精品免费久久久久国产一区 | 护士一级aaaaaa毛片 | 国产在线天堂a v | 欧美另类69xxxxx性欧 | 精品少妇一区二区三区视频 | 一二三四高清在线手机视频 | 国产午夜精品久久久久九九 | 女人洗澡一级特黄毛片 | 国内精品欧美久久精品 | 欧美18videosex性极品 | 欧美性视频一区二区三区 | 加勒比一区二区三区 | 国产一区2区 | 日本高清精品动漫 | 国产一区二区三区高清视频 | 精品久久久久久中文字幕专区 | 国内免费自拍视频 | 久久男人天堂 | 青青青青在线成人视99 | 国产乱码精品一区二区三区四川 | 欧美性妇 |