設計模式--適配器模式


一。類繼承方式
public class SquarePeg{
  public void insert(String str){
    System.out.println("SquarePeg insert():"+str);
  }
}
public class RoundPeg{
  public void insertIntohole(String msg){
    System.out.println("RoundPeg insertIntoHole():"+msg);
}
}
如今有一個應用,須要既打方形樁,又打圓形樁.那麼咱們須要將這兩個沒有關係的類綜合應用.假設RoundPeg咱們沒有源代碼,或源代碼咱們不想修改,那麼咱們使用Adapter來實現這個應用:
public class PegAdapter extends SquarePeg{

  private RoundPeg roundPeg;
  public PegAdapter(RoundPeg peg)(this.roundPeg=peg;)
  public void insert(String str){super.insert(str); roundPeg.insertIntoHole(str);}
}

二。接口方式:

下面是新的RoundPeg 和SquarePeg, 除了實現接口這一區別,和上面的沒什麼區別。
public class SquarePeg implements ISquarePeg{
  public void insert(String str){
    System.out.println("SquarePeg insert():"+str);
  }
}
public class RoundPeg implements IRoundPeg{
  public void insertIntohole(String msg){
    System.out.println("RoundPeg insertIntoHole():"+msg);
  }
}
下面是新的PegAdapter,叫作two-way adapter:
public class PegAdapter implements IRoundPeg,ISquarePeg{

  private RoundPeg roundPeg;
  private SquarePeg squarePeg;

  // 構造方法
  public PegAdapter(RoundPeg peg){this.roundPeg=peg;}
  // 構造方法
  public PegAdapter(SquarePeg peg)(this.squarePeg=peg;)
  public void insert(String str){ roundPeg.insertIntoHole(str);}
}
還有一種叫Pluggable Adapters,能夠動態的獲取幾個adapters中一個。使用Reflection技術,能夠動態的發現類中的Public方法。
相關文章
相關標籤/搜索