一夜銷燬 73 億美元柴犬幣,V 神在演講中做出解釋
阿新 • • 發佈:2021-05-18
定義:
將一個類的介面轉換成客戶希望的另外一個介面,使得原本由於介面不相容而不能一起工作的那些類能一起工作。
實現:
介面卡模式分為類結構型模式和物件結構型模式兩種,前者類之間的耦合度比後者高, 用得較少
程式碼案例:
類結構模式:
這裡的目的是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 { publicstatic void main(String[] args) { ObjectAdaptor adaptor1 = new ObjectAdaptor(new Chicken()); adaptor1.gaGa(); } }
結果:
物件結構模式與類結構模式區別是通過構造方法傳參而不是繼承類。