内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

Java的適配器設(shè)計(jì)模式是什么意思

本篇內(nèi)容介紹了“Java的適配器設(shè)計(jì)模式是什么意思”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

創(chuàng)新互聯(lián)公司專注于網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站、網(wǎng)頁設(shè)計(jì)、網(wǎng)站制作、網(wǎng)站開發(fā)。公司秉持“客戶至上,用心服務(wù)”的宗旨,從客戶的利益和觀點(diǎn)出發(fā),讓客戶在網(wǎng)絡(luò)營銷中找到自己的駐足之地。尊重和關(guān)懷每一位客戶,用嚴(yán)謹(jǐn)?shù)膽B(tài)度對(duì)待客戶,用專業(yè)的服務(wù)創(chuàng)造價(jià)值,成為客戶值得信賴的朋友,為客戶解除后顧之憂。

適配器模式

適配器模式

1、適配器模式(Adapter Pattern)將某個(gè)類的接口轉(zhuǎn)換成客戶端期望的另一個(gè)接口表示,主的目的是兼容性,讓原本因接口不匹配不能一起工作的兩個(gè)類可以協(xié)同工作。其別名為包裝器(Wrapper)

2、適配器模式屬于結(jié)構(gòu)型模式

3、主要分為三類:

  • 類適配器模式

  • 對(duì)象適配器模式

  • 接口適配器模式

適配器的工作原理:

  • 1、 適配器模式:將一個(gè)類的接口轉(zhuǎn)換成另一種接口.讓原本接口不兼容的類可以兼容

  • 2、從用戶的角度看不到被適配者,是解耦的

  • 3、用戶調(diào)用適配器轉(zhuǎn)化出來的目標(biāo)接口方法,適配器再調(diào)用被適配者的相關(guān)接口方法

  • 4、 用戶收到反饋結(jié)果,感覺只是和目標(biāo)接口交互

Java的適配器設(shè)計(jì)模式是什么意思

舉個(gè)例子

生活中我使用手機(jī),電腦,游戲機(jī),電視機(jī)都有自己的適配器,有點(diǎn)物理常識(shí)的人都知道,不同電子產(chǎn)品所需的電壓不同,家庭電壓是220V,而我們的手機(jī),電腦有可能只需要12V,8V,5V等,這時(shí)候手機(jī)適配器,電腦適配器就起到了作用Java的適配器設(shè)計(jì)模式是什么意思

類適配器模式

基本介紹:Adapter類,通過繼承 src類,實(shí)現(xiàn) dst 類接口,完成src->dst的適配

案例: 充電器本身相當(dāng)于Adapter,220V交流電相當(dāng)于src (即被適配者),我們的目dst(即 目標(biāo))是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, 可以充電~~

類適配器模式注意事項(xiàng)和細(xì)節(jié)

  1. Java是單繼承機(jī)制,所以類適配器需要繼承src類這一點(diǎn)算是一個(gè)缺點(diǎn), 因?yàn)檫@要求dst必須是接口,有一定局限性。

  2. src類的方法在Adapter中都會(huì)暴露出來,也增加了使用的成本。

  3. 由于其繼承了src類,所以它可以根據(jù)需求重寫src類的方法,使得Adapter的靈活性增強(qiáng)了。

對(duì)象適配器模式介紹

1、 基本思路和類的適配器模式相同,只是將Adapter類作修改,不是繼承src類,而是持有src類的實(shí)例,以解決兼容性的問題。 即:持有 src類,實(shí)現(xiàn) dst 類接口,完成src->dst的適配

2、 根據(jù)“合成復(fù)用原則”,在系統(tǒng)中盡量使用關(guān)聯(lián)關(guān)系來替代繼承關(guān)系。

3、 對(duì)象適配器模式是適配器模式常用的一種

案例: 充電器本身相當(dāng)于Adapter,220V交流電相當(dāng)于src (即被適配者),我們的目dst(即 目標(biāo))是5V直流電,使用對(duì)象適配器模式解決

  • 適配器類

    //適配器類
    public class VoltageAdapter  implements IVoltage5V {
    
    	private Voltage220V voltage220V; // 關(guān)聯(lián)關(guān)系-聚合
    	
    	
    	//通過構(gòu)造器,傳入一個(gè) Voltage220V 實(shí)例
    	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("使用對(duì)象適配器,進(jìn)行適配~~");
    			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(" === 對(duì)象適配器模式 ====");
    		Phone phone = new Phone();
    		phone.charging(new VoltageAdapter(new Voltage220V()));
    	}
    
    }
    輸出: 
    === 對(duì)象適配器模式 ====
    電壓=220伏
    使用對(duì)象適配器,進(jìn)行適配~~
    適配完成,輸出的電壓為=5
    電壓為5V, 可以充電~~

接口適配器模式介紹

1、當(dāng)不需要全部實(shí)現(xiàn)接口提供的方法時(shí),可先設(shè)計(jì)一個(gè)抽象類實(shí)現(xiàn)接口,并為該接口中每個(gè)方法提供一個(gè)默認(rèn)實(shí)現(xiàn)(空方法),那么該抽象類的子類可有選擇地覆蓋父類的某些方法來實(shí)現(xiàn)需求

2、 適用于一個(gè)接口不想使用其所有的方法的情況

怎么理解呢?

小例子1:手機(jī)適配器太多了,不同型號(hào)的,都可以充電,充電的速度效率都不同,隨用用一種就可以了

小例子2:現(xiàn)實(shí)開發(fā)中,一個(gè)類去實(shí)現(xiàn)一個(gè)接口,發(fā)現(xiàn)這個(gè)接口里面有很多方法,而我們只需要部分功能,這個(gè)時(shí)候就可以用了

  • 接口(不同型號(hào)的手機(jī)適配器)

    public interface Interfaces {
        //型號(hào)1
    	public void m1();
           //型號(hào)2
    	public void m2();
           //型號(hào)3
    	public void m3();
           //型號(hào)4
    	public void m4();
    }

  • 抽象類實(shí)現(xiàn)(適配器類)

    //在抽象AbsAdapter 我們將 Interfaces 的方法進(jìn)行默認(rèn)實(shí)現(xiàn)
    public abstract class AbsAdapter implements Interfaces {
    
    	//默認(rèn)實(shí)現(xiàn)
    	public void m1() {
    
    	}
    
    	public void m2() {
    
    	}
    
    	public void m3() {
    
    	}
    
    	public void m4() {
    
    	}
    }

  • 使用,給手機(jī)充電

    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("使用了型號(hào)1的手機(jī)適配器給手機(jī)充電");
    			}
    		};
    		
    		absAdapter.m1();
    	}
    }
    輸出:
        使用了型號(hào)1的手機(jī)適配器給手機(jī)充電

適配器模式的注意事項(xiàng)和細(xì)節(jié)

1、三種命名方式,是根據(jù) src是以怎樣的形式給到Adapter(在Adapter里的形式)來命名的。

2、類適配器:以類給到,在Adapter里,就是將src當(dāng)做類,繼承

對(duì)象適配器:以對(duì)象給到,在Adapter里,將src作為一個(gè)對(duì)象,持有

接口適配器:以接口給到,在Adapter里,將src作為一個(gè)接口,實(shí)現(xiàn)

3、Adapter模式最大的作用還是將原本不兼容的接口融合在一起工作。

優(yōu)點(diǎn): 

1、可以讓任何兩個(gè)沒有關(guān)聯(lián)的類一起運(yùn)行。

2、提高了類的復(fù)用。

3、增加了類的透明度。

4、靈活性好。

缺點(diǎn): 

1、過多地使用適配器,會(huì)讓系統(tǒng)非常零亂,不易整體進(jìn)行把握。比如,明明看到調(diào)用的是 A 接口,其實(shí)內(nèi)部被適配成了 B 接口的實(shí)現(xiàn),一個(gè)系統(tǒng)如果太多出現(xiàn)這種情況,無異于一場災(zāi)難。因此如果不是很有必要,可以不使用適配器,而是直接對(duì)系統(tǒng)進(jìn)行重構(gòu)。

2.由于 JAVA 至多繼承一個(gè)類,所以至多只能適配一個(gè)適配者類,而且目標(biāo)類必須是抽象類。

使用場景:有動(dòng)機(jī)地修改一個(gè)正常運(yùn)行的系統(tǒng)的接口,這時(shí)應(yīng)該考慮使用適配器模式。

“Java的適配器設(shè)計(jì)模式是什么意思”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

當(dāng)前文章:Java的適配器設(shè)計(jì)模式是什么意思
路徑分享:http://m.rwnh.cn/article16/jepedg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、標(biāo)簽優(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)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
神农架林区| 布拖县| 永兴县| 阳春市| 瓮安县| 哈尔滨市| 黄冈市| 黎平县| 兴义市| 乡宁县| 安图县| 娄烦县| 双流县| 伽师县| 锡林浩特市| 宽城| 哈巴河县| 滨州市| 青川县| 宜春市| 万载县| 冷水江市| 凤台县| 望都县| 丰都县| 乐安县| 苗栗县| 永安市| 黔西县| 东至县| 阿克陶县| 承德市| 高阳县| 巴塘县| 大余县| 花垣县| 资阳市| 浏阳市| 新民市| 正阳县| 商洛市|