1. 程式人生 > 資訊 >一夜銷燬 73 億美元柴犬幣,V 神在演講中做出解釋

一夜銷燬 73 億美元柴犬幣,V 神在演講中做出解釋

定義:

將一個類的介面轉換成客戶希望的另外一個介面,使得原本由於介面不相容而不能一起工作的那些類能一起工作。

實現:

介面卡模式分為類結構型模式和物件結構型模式兩種,前者類之間的耦合度比後者高, 用得較少

程式碼案例:

類結構模式:

這裡的目的是Chicken的gege方法能適配Duck的gaga方法。

Duck:

public interface Duck {
    public void gaGa();
}

Chicken:

public class Chicken {
    public void geGe() {
        System.out.println("chicken ge ge");
    }
}

介面卡類:

public class ClassAdaptor extends Chicken implements Duck {
    @Override
    public void gaGa() {
        geGe();
    }
}

測試:

public class AdaptorTest {
    public static void main(String[] args) {
        ClassAdaptor adaptor = new ClassAdaptor();
        adaptor.gaGa();
    }
}

結果:

這裡呼叫的介面卡類的gaga方法,但是是gege方法被呼叫了。所以達到了介面卡模式的目的。

物件結構模式:

Duck和Chicken不變,就改介面卡類:

public class ObjectAdaptor implements Duck{
    public Chicken chicken;
    public ObjectAdaptor(Chicken chicken) {
        this.chicken = chicken;
    }
    @Override
    public void gaGa() {
        chicken.geGe();
    }
}

測試類:

public class AdaptorTest {
    public
static void main(String[] args) { ObjectAdaptor adaptor1 = new ObjectAdaptor(new Chicken()); adaptor1.gaGa(); } }

結果:

物件結構模式與類結構模式區別是通過構造方法傳參而不是繼承類。