Java設計模式之適配器模式

適配器模式是指將一個類的接口轉換成用戶期望的另一個接口,使得原本不兼容的類可以一起工作。比如:手機充電需要5V的電壓,而生活供電是220V電壓,所以給手機充電就需要一個5V的充電器,這個充電器就是適配器。由此可見,適配器模式的出現是爲了解決現有的類或接口不能滿足需求,且無法直接修改的問題。
適配器模式包含的角色如下:

  • 被適配者(Adaptee):比如:220V的電壓就是被適配者,表示已經存在的類或對象;
  • 目標角色(Target):比如:5V電壓就是目標角色,也就是我們的期望接口、抽象類或具體類;
  • 適配器(Adapter):比如:充電器就是適配器,它可以調用Adaptee和Target進行適配;
    總之一句話,適配器模式是指Adapter可以根據Target接口中的方法來調用Adaptee中的方法。
    其實現方案有兩種:類適配器和對象適配器。

類適配器

public class Adaptee {

    public int output220V() {
        int output = 220;
        System.out.println("輸出" + output + "V電壓");
        return output;
    }
}
public interface Target {

    int output5V();
}
public class Adapter extends Adaptee implements Target {
    @Override
    public int output5V() {
        int output = super.output220V() / 44;
        System.out.println("輸出" + output + "V電壓");
        return output;
    }
}
public class Test {
    public static void main(String[] args) {
        Target target = new Adapter();
        target.output5V();
    }
}
輸出220V電壓
輸出5V電壓

對象適配器

public class Adapter implements Target {

    private Adaptee adaptee;

    public Adapter(Adaptee adaptee) {
        this.adaptee = adaptee;
    }

    @Override
    public int output5V() {
        int output = adaptee.output220V() / 44;
        System.out.println("輸出" + output + "V電壓");
        return output;
    }
}
public class Test {
    public static void main(String[] args) {
        Target target = new Adapter(new Adaptee());
        target.output5V();
    }
}

總結

  • 系統需要使用一些現有的類,這些類的接口(方法名等)無法改變且不符合需要,則可以用適配器模式;
  • 類適配器一次最多隻能適配一個Adaptee,因爲Java不支持多繼承。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章