設計模式系列2——介面卡模式
阿新 • • 發佈:2018-12-25
介面卡是一個介面轉換器,顧名思義,當我們得到的介面或者類與要求不匹配時,利用介面卡對其進行轉換,從而達到我們的要求。
介面卡模式一般包含三個角色:
1:Target(目標抽象類):是我們需要用的介面或者類樣式。
2:Adapter(介面卡類):將已有介面或類轉換為我們需要的樣式。
3:Adaptee(適配者類):已有的介面或者類,待轉換。
介面卡模式主要有三種:
1、類介面卡
2、物件介面卡
3、預設介面卡
一、類介面卡
//需要用到method2方法 public interface Target { public void method1(); public void method2(); } //然而已有類中沒有method2方法 public class Adaptee { public void method1(){} } //所以要使用(繼承)介面卡並設定目標(實現目標介面) public class Adapter extends Adaptee implements Target { @Override public void method2() { //巴拉巴拉 } }
二、物件介面卡
//需要用到method1、2兩個方法 public interface Target { public void method1(); public void method2(); } //可是原類中只有一個該怎麼辦呢 public class Adaptee { public void method1(){} } public class Adapter { //只好在新類中定義原類的私有變數 private Adaptee adaptee; public Adapter(Adaptee adaptee){ this.adaptee = adaptee; } public void method1(){ this.adaptee.method1(); } //並實現原類中沒有的方法 public void method2(){ //巴拉巴拉 } }
三、預設介面卡
//這個介面有太多方法 public interface Adaptee { void a(); void b(); void c(); void d(); void e(); void f(); } //只好新建一個抽象類來繼承它 public abstract class Adapter implements Adaptee { public void a(){} public void b(){} public void c(){} public void d(){} public void e(){} public void f(){} } //繼承抽象類就可以實現間接實現介面而不用實現其所有方法了 public class Target extends Adapter { public void a(){} public void d(){} }