本篇內(nèi)容介紹了“Java的適配器設(shè)計模式是什么意思”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)公司專注于網(wǎng)站設(shè)計制作、做網(wǎng)站、網(wǎng)頁設(shè)計、網(wǎng)站制作、網(wǎng)站開發(fā)。公司秉持“客戶至上,用心服務(wù)”的宗旨,從客戶的利益和觀點出發(fā),讓客戶在網(wǎng)絡(luò)營銷中找到自己的駐足之地。尊重和關(guān)懷每一位客戶,用嚴謹?shù)膽B(tài)度對待客戶,用專業(yè)的服務(wù)創(chuàng)造價值,成為客戶值得信賴的朋友,為客戶解除后顧之憂。
適配器模式
1、適配器模式(Adapter Pattern)將某個類的接口轉(zhuǎn)換成客戶端期望的另一個接口表示,主的目的是兼容性,讓原本因接口不匹配不能一起工作的兩個類可以協(xié)同工作。其別名為包裝器(Wrapper)
2、適配器模式屬于結(jié)構(gòu)型模式
3、主要分為三類:
類適配器模式
對象適配器模式
接口適配器模式
適配器的工作原理:
1、 適配器模式:將一個類的接口轉(zhuǎn)換成另一種接口.讓原本接口不兼容的類可以兼容
2、從用戶的角度看不到被適配者,是解耦的
3、用戶調(diào)用適配器轉(zhuǎn)化出來的目標接口方法,適配器再調(diào)用被適配者的相關(guān)接口方法
4、 用戶收到反饋結(jié)果,感覺只是和目標接口交互
舉個例子
生活中我使用手機,電腦,游戲機,電視機都有自己的適配器,有點物理常識的人都知道,不同電子產(chǎn)品所需的電壓不同,家庭電壓是220V,而我們的手機,電腦有可能只需要12V,8V,5V等,這時候手機適配器,電腦適配器就起到了作用
類適配器模式
基本介紹:Adapter類,通過繼承 src類,實現(xiàn) dst 類接口,完成src->dst的適配
案例: 充電器本身相當于Adapter,220V交流電相當于src (即被適配者),我們的目dst(即 目標)是5V直流電
被適配者
//被適配的類 public class Voltage220V { //輸出220V的電壓 public int output220V() { int src = 220; System.out.println("家庭電壓=">
適配接口
//適配接口 public interface IVoltage5V { public int output5V(); }
適配器類
//適配器類 public class VoltageAdapter extends Voltage220V implements IVoltage5V { @Override public int output5V() { // TODO Auto-generated method stub //獲取到220V電壓 int srcV = output220V(); int dstV = srcV / 44 ; //轉(zhuǎn)成 5v return dstV; } }
測試使用
public class Phone { //充電 public void charging(IVoltage5V iVoltage5V) { if(iVoltage5V.output5V() == 5) { System.out.println("電壓為5V, 可以充電~~"); } else if (iVoltage5V.output5V() > 5) { System.out.println("電壓大于5V, 不能充電~~"); } } } public class Client { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(" === 類適配器模式 ===="); Phone phone = new Phone(); phone.charging(new VoltageAdapter()); } } 輸出: === 類適配器模式 ==== 家庭電壓=220伏 電壓為5V, 可以充電~~
類適配器模式注意事項和細節(jié)
Java是單繼承機制,所以類適配器需要繼承src類這一點算是一個缺點, 因為這要求dst必須是接口,有一定局限性。
src類的方法在Adapter中都會暴露出來,也增加了使用的成本。
由于其繼承了src類,所以它可以根據(jù)需求重寫src類的方法,使得Adapter的靈活性增強了。
對象適配器模式介紹
1、 基本思路和類的適配器模式相同,只是將Adapter類作修改,不是繼承src類,而是持有src類的實例,以解決兼容性的問題。 即:持有 src類,實現(xiàn) dst 類接口,完成src->dst的適配
2、 根據(jù)“合成復(fù)用原則”,在系統(tǒng)中盡量使用關(guān)聯(lián)關(guān)系來替代繼承關(guān)系。
3、 對象適配器模式是適配器模式常用的一種
案例: 充電器本身相當于Adapter,220V交流電相當于src (即被適配者),我們的目dst(即 目標)是5V直流電,使用對象適配器模式解決
適配器類
//適配器類 public class VoltageAdapter implements IVoltage5V { private Voltage220V voltage220V; // 關(guān)聯(lián)關(guān)系-聚合 //通過構(gòu)造器,傳入一個 Voltage220V 實例 public VoltageAdapter(Voltage220V voltage220v) { this.voltage220V = voltage220v; } @Override public int output5V() { int dst = 0; if(null != voltage220V) { int src = voltage220V.output220V();//獲取220V 電壓 System.out.println("使用對象適配器,進行適配~~"); dst = src / 44; System.out.println("適配完成,輸出的電壓為=" + dst); } return dst; } }
使用,充電
public class Client { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(" === 對象適配器模式 ===="); Phone phone = new Phone(); phone.charging(new VoltageAdapter(new Voltage220V())); } } 輸出: === 對象適配器模式 ==== 電壓=220伏 使用對象適配器,進行適配~~ 適配完成,輸出的電壓為=5 電壓為5V, 可以充電~~
接口適配器模式介紹
1、當不需要全部實現(xiàn)接口提供的方法時,可先設(shè)計一個抽象類實現(xiàn)接口,并為該接口中每個方法提供一個默認實現(xiàn)(空方法),那么該抽象類的子類可有選擇地覆蓋父類的某些方法來實現(xiàn)需求
2、 適用于一個接口不想使用其所有的方法的情況
怎么理解呢?
小例子1:手機適配器太多了,不同型號的,都可以充電,充電的速度效率都不同,隨用用一種就可以了
小例子2:現(xiàn)實開發(fā)中,一個類去實現(xiàn)一個接口,發(fā)現(xiàn)這個接口里面有很多方法,而我們只需要部分功能,這個時候就可以用了
接口(不同型號的手機適配器)
public interface Interfaces { //型號1 public void m1(); //型號2 public void m2(); //型號3 public void m3(); //型號4 public void m4(); }
抽象類實現(xiàn)(適配器類)
//在抽象AbsAdapter 我們將 Interfaces 的方法進行默認實現(xiàn) public abstract class AbsAdapter implements Interfaces { //默認實現(xiàn) public void m1() { } public void m2() { } public void m3() { } public void m4() { } }
使用,給手機充電
public class Client { public static void main(String[] args) { AbsAdapter absAdapter = new AbsAdapter() { //只需要去覆蓋我們 需要使用 接口方法 @Override public void m1() { // TODO Auto-generated method stub System.out.println("使用了型號1的手機適配器給手機充電"); } }; absAdapter.m1(); } } 輸出: 使用了型號1的手機適配器給手機充電
適配器模式的注意事項和細節(jié)
1、三種命名方式,是根據(jù) src是以怎樣的形式給到Adapter(在Adapter里的形式)來命名的。
2、類適配器:以類給到,在Adapter里,就是將src當做類,繼承
對象適配器:以對象給到,在Adapter里,將src作為一個對象,持有
接口適配器:以接口給到,在Adapter里,將src作為一個接口,實現(xiàn)
3、Adapter模式最大的作用還是將原本不兼容的接口融合在一起工作。
優(yōu)點:
1、可以讓任何兩個沒有關(guān)聯(lián)的類一起運行。
2、提高了類的復(fù)用。
3、增加了類的透明度。
4、靈活性好。
缺點:
1、過多地使用適配器,會讓系統(tǒng)非常零亂,不易整體進行把握。比如,明明看到調(diào)用的是 A 接口,其實內(nèi)部被適配成了 B 接口的實現(xiàn),一個系統(tǒng)如果太多出現(xiàn)這種情況,無異于一場災(zāi)難。因此如果不是很有必要,可以不使用適配器,而是直接對系統(tǒng)進行重構(gòu)。
2.由于 JAVA 至多繼承一個類,所以至多只能適配一個適配者類,而且目標類必須是抽象類。
使用場景:有動機地修改一個正常運行的系統(tǒng)的接口,這時應(yīng)該考慮使用適配器模式。
“Java的適配器設(shè)計模式是什么意思”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
當前文章:Java的適配器設(shè)計模式是什么意思
路徑分享:http://muchs.cn/article16/jepedg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、標簽優(yōu)化、網(wǎng)站策劃、品牌網(wǎng)站制作、靜態(tài)網(wǎng)站、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)