新成員,新問題(介面卡模式)

iky45發表於2009-04-30
今天剛剛來到這個網站,初看一下,感覺非常棒。
我是java新手,最近在看設計模式相關知識,很多地方理解不深刻,望大家給我一下指導,其中看到“適配模式”,有下面的疑問:

1,首先引用本網站的參考教程如下:
假設我們要打樁,有兩種類:方形樁 圓形樁.
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);}

}

2,問題:
為什麼這裡非要用繼承+組合的方式呢?我的想法是就一個組合就可以了吧?
public class PegAdapter {

  private RoundPeg roundPeg;
private SquarePeg squarePeg;

  public PegAdapter(RoundPeg roundPeg, SquarePeg squarePeg)
{
this.roundPeg=roundPeg;
this.squarePeg = squarePeg;

  public void insert(String str)
{
squarePeg.insert(str);
roundPeg.insertIntoHole(str);
}
}

請大家指出我這個設計的缺陷?

相關文章