java設計模式之適配器模式


  說到適配器,我們可能會想到電腦的適配器,沒錯,其實作用是一樣的,電腦的適配器在中國可以使用,在美國也可以使用,它的主要作用是在新接口和老接口之間進行適配。。這就是一個適配的過程,適配器模式的類圖如下:

  這個類圖是我在其他的地方截到的,我以前覺的類圖特別不好看,慢慢接觸之后發現類圖和流程圖都特別有意義,一看就特別的清晰。整個流程就是通過AdapterAdaptee轉換為目標(Target)的子類。既然已經知道原理了,那下面開始碼代碼吧。我來舉例一個場景吧,經常需要使用到投影儀,但是有一些人的電腦並不支持投影儀的大口,只能使用適配器了。那就是可以把小口轉換為大口。

 

package com.roc.adapter;
/**
 * 投影儀支持的大口
 * @author liaowp
 *
 */
public interface BigPort {
    
    public void userBigPort();//使用的大口
}

 

package com.roc.adapter;
/**
 * 電腦的小口
 * @author liaowp
 *
 */
public interface SmallPort {
    public void userSmallPort();//使用小口
}
package com.roc.adapter;
/**
 * 適配器模式
 * @author liaowp
 *
 */
public class SmallToBig implements BigPort{

    private SmallPort smallPort;//小口
    
    public SmallToBig(SmallPort smallPort){//獲得小口
        this.smallPort=smallPort;
    }

    public void userBigPort() {
        this.smallPort.userSmallPort();    //使用小口
    }
            
}
package com.roc.adapter;
/**
 * 客戶端
 * @author liaowp
 *
 */
public class Client {

    public static void main(String[] args) {
        SmallPort smallPort = new SmallPort() {//電腦自帶小口
            public void userSmallPort() {
                System.out.println("使用的是電腦小口");
            }
        };
        //需要一個大口才可以投影,小口轉換為大口
        BigPort bigPort=new SmallToBig(smallPort);
        bigPort.userBigPort();//電腦小口工作中    實現了適配
    }    
}

下面說一下適配器的優缺點:

優點:

1、將目標類和適配者類解耦

2、增加了類的透明性和復用性,將具體的實現封裝在適配者類中,對於客戶端類來說是透明的,而且提高了適配者的復用性

3、靈活性和擴展性都非常好,符合開閉原則

類適配器還有的優點:

1、由於適配器類是適配者類的子類,因此可以再適配器類中置換一些適配者的方法,使得適配器的靈活性更強。

類適配器的缺點:

1、對於Java、C#等不支持多重繼承的語言,一次最多只能適配一個適配者類,而且目標抽象類只能為接口,不能為類,其使用有一定的局限性,不能將一個適配者類和他的子類同時適配到目標接口。

對象適配器還有的優點:

1、把多個不同的適配者適配到同一個目標,也就是說,同一個適配器可以把適配者類和他的子類都適配到目標接口。

對象適配器的缺點:

1、與類適配器模式相比,要想置換適配者類的方法就不容易。

適配器模式與代理模式的區別:

適配器模式

    是把2個不同的東西轉換到可以正常使用,適配器是去迎合目標對象與源對象。

代理模式

    是2個對象都有相同的功能,2者接口是一樣的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM