请教适配器模式

07-07-01 duanshao
请教一个问题:程序上说,一下代码可以实现既打方形桩,又打圆形桩,可是,我看不出来,高手指点一下吧?PegAdapter不是重载了insert(String str),我的感觉是他只能打圆形桩。不知道对不对,我是大一的新生,感觉很笨的,大家不要骂我啊

如何使用?

实现Adapter方式,其实"think in Java"的"类再生"一节中已经提到,有两种方式:组合(composition)和继承(inheritance).

假设我们要打桩,有两种类:方形桩 圆形桩.

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){ roundPeg.insertIntoHole(str);}

}

         

banq
2007-07-02 11:22
如果打方形桩和圆形桩,只要在public void insert(String str){ roundPeg.insertIntoHole(str);}

中增加super.insert(str);等类似语句即可。

这是原文BUG。谢谢

猜你喜欢