學習筆記_適配器模式

將一類的接口轉換成客戶希望的另外一個接口,Adapter模式使得原本由於接口不兼容而不能一起工作那些類可以一起工作。

適用情況:
使用的前提是:接口中規定了所有要實現的方法; 但一個要實現此接口的具體類,只用到了其中的幾個方法,而其它的方法都是沒有用的。

實現方法:
用一個抽象類實現已有的接口,並實現接口中所規定的所有方法,這些方法的實現可以都是空方法;
原本要實現接口的子類,只實現上面的抽象類即可,並在其內部實現時,只對其感興趣的方法進行實現;

類圖:


角色:
目標接口(Target): 客戶所期待的接口。目標可以是具體的或抽象的類,也可以是接口。
需要適配的類(Adaptee): 需要適配的類或適配者類。
適配器(Adapter): 通過包裝一個需要適配的對象,把原接口轉換成目標接口。

實例:
public interface Target
{
    public void request();
}

public class Adaptee
{
    public void specialRequest()
    {
        System.out.println("this is special request");
    }
}

public class Adapter implements Target
{
    Adaptee adaptee = new Adaptee();

    @Override
    public void request()
    {
        adaptee.specialRequest();
    }
}

public class Client
{
    public static void main(final String[] args)
    {
        final Target adapter = new Adapter();
        adapter.request();
    }
}

主要內容:
1) 類適配器
當客戶在接口中定義了他期望的行爲時,我們就可以應用適配器模式,提供一個實現該接口的類,並且擴展已有的類,通過創建子類來實現適配。

2)對象適配器
對象適配器通過組合除了滿足"用戶期待的接口"還降低了代碼間的不良耦合。

3)缺省適配器
缺省適配器模式是一種特殊的適配器模式,但這個適配器是由一個抽象類實現的,並且在抽象類中要實現目標接口中所規定的所有方法,但很多方法的實現都是空方法,而具體的子類都要繼承此抽象類。

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