Design Pattern

Design Pattern Adapter Pattern(適配器模式)

Adapter Pattern(適配器模式)

Adapter Pattern也被稱為Wrapper Pattern,替我們將A包裝成B可以使用的形狀

當你想要使用三孔的插頭,卻只有兩孔的插座,需要接上兩孔轉三孔的適配器,才能讓三孔的電器能運作

好處

假如你有一個系統,希望它能和一家新廠商的library搭配使用,但新廠商的介面卻跟舊廠商不同,不用特意修改現有的程式碼時,就可以寫一個類別,將新廠商的介面轉換成你所希望的介面

程式範例

建立 Adapter 的設計模式有幾個要注意的地方

1.要先把雙方的interface建立好

2.要有一個類實作這個interface

3.這個Adapter命名方式,是要把A變成B,所以名稱一定為AAdapter

Dog (interface)

public interface Dog {
    void eatBone();
    void wang();
}

Cat (interface)

public interface Cat {
    void catchFish();
    void meow();
}

Dog (實例)

public class BigDog implements Dog {
    @Override
    public void eatBone() {
        System.out.println("吃骨頭");
    }

    @Override
    public void wang() {
        System.out.println("汪");
    }
}

DogAdapter (因為要把狗當成貓 所以要實現貓這個interface,之後對應要實現的方法)

//把狗適配成貓
public class DogAdapter implements Cat {
    private Dog dog;
    DogAdapter(Dog dog) {
        this.dog = dog;
    }

    @Override
    public void catchFish() {
        dog.eatBone();
    }

    @Override
    public void meow() {
        dog.wang();
    }
}

執行效果 (把狗當成貓,但最後執行結果還是一樣是狗的行為)

public class Main {
    public static void main(String[] args) {
        BigDog bigDog = new BigDog();
        DogAdapter dogAdapter = new DogAdapter(bigDog);
        dogAdapter.catchFish();
        dogAdapter.meow();
    }
}

吃骨頭
汪

發表迴響