淺談Java設計模式-之-適配器模式

適配器模式是將一個類的接口變成客戶端所期待的另一種接口,從而使原本接口不匹配而無法在一起工作的兩個類能夠在一起工作,適配器模式也稱變壓器模式。

 

適配器模式主要分爲兩種:類適配器 和 對象適配器

 

類適配器是基於繼承,對象適配器是基於組合,我們推薦多用組合少用繼承。

 

我們舉個例子:

 

如下圖,現給手機充電,但牆上均爲三腳插孔,而手機充電器爲兩腳插頭,從而無法爲手機充電,所以我們需要一個帶有三腳插頭的插線板,同時插線板上須有兩腳插孔。

 

如此,手機-->手機充電器插頭-->插線板-->牆上的三腳插孔,完成手機充電。

 

一個適配器模式主要有如下幾個要素:

1、Source源角色(牆上的三腳插孔)

2.、Adapter適配器角色(插線板)

3.、Target目標角色(手機充電器插頭)

4、Client客戶端角色(手機)

 

下面我們來看一下如何用代碼描述這個適配器的過程:

 

/**源對象 (牆上的三腳插孔)*/

public class Source {

    public void method() {
        System.out.println("我是牆上的三腳插孔,我只接受三腳插頭的");
    }

}

/**適配器目標接口(手機充電器插頭)*/

public interface Target {

    /**與源對象中的方法相同 */
    public void method();
}

/**類適配器方式,通過繼承實現(插線板)*/

public class Adapter extends Source implements Target {

    public void method() { 
        //調用父類的方法
        super.method();
    }
}

/**對象適配器方式,通過組合實現(插線板)*/
public class Adapter2 implements Target {

    /**對源對象的引用*/
    private Source source;

    public Adapter2 (Source source) {
        this.source = source;
    }

    @Override
    public void method() {
        source.method();
    }
}

/**客戶端(手機)*/
public class Client {

    public static void main(String[] args) {
        //類適配器方式
        Target target = new Adapter();
        target.method();

        //對象適配器方式
        Source source = new Source();
        Target target2 = new Adapter2(source);
        target2.method();
    }
}


以上就是一個適配器模式的典型代碼模板,在Java IO中,字節流InputStream轉換爲字符流,中間即使用了適配器模式InputStreamReader,適配器模式可以讓兩個沒有關係的類在一起運行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章