请教一个Adapter的问题

我看了Jdon中的《设计模式之Adapter(适配器)》
http://www.jdon.com/designpatterns/adapter.htm
这篇文章,我有一点没有看懂的地方,
文章中写到的这一小段:

现在有一个应用,需要既打方形桩,又打圆形桩.那么我们需要将这两个没有关系的类综合应用.假设RoundPeg我们没有源代码,或源代码我们不想修改,那么我们使用Adapter来实现这个应用:
public class PegAdapter extends SquarePeg{
  private RoundPeg roundPeg;
  public PegAdapter(RoundPeg peg)(this.roundPeg=peg;)
  public void insert(String str){ roundPeg.insertIntoHolestr);}
}

在insert(String str)的方法中执行的是roundPeg.insertIntoHolestr);
这不是只打了圆形桩么?方形桩是在那里打的?

望各位明白人指点一下,先谢过大家了!

写错了

那里写错了?

==========================
写错了
==========================

--------------------------
Re: 请教一个Adapter的问题 发表时间: 2003年11月19日 13:29:00 回复

那里写错了?
--------------------------

我来回答,应该是Pig不是Peg,对吧?:-)

这个例子,不看也罢,越看越糊涂,还是看GoF的原文吧,写的及其清楚,至少没有错误.

那个例子是:原来有RTF编辑能力的Control(Widget),怎样在文本编辑器当中复用,有两种方式,a.类继承,b.class member.比打猪的例子可清楚多了.

还有Adapter的关键点是在重用已经存在的功能性的部件,比如说RTF的编辑控件.

我在ADO.Net当中看到一个Adapter例子,是用来让客户端的离线数据集(XML或者是其他的)能够重用现存的SQL数据访问类(OleDB或者Native SQLServer的SQL访问类).

我学习的时候,看到Adapter才理解这几个类的相互关系和使用方式,看来,以后对Programmer的要求越来越高了.

总之,一句话provide programming interface of existing functional class to reuse in the new project without knowing internal implementation of the functional class.

liloboy,谢谢你的解答。
希望文章的作者检查一下自己的文章,如果真的错了那么就改了吧,

我觉得banq并没有错,只是例子不太合适罢了。

这段代码要看你从哪个角度看,如果从Adapter模式展现角度,是没有问题的。

已经在insert方法中实现了对打圆形桩的“变压”式调用,实际Adapter模式非常简单,就是一个对象组合应用,看例子时,千万别陷入具体应用功能进去。

我补充一下,还有一种Adapter的形式是继承,和Class Member的使用是有区别的.

===============================================================
这段代码要看你从哪个角度看,如果从Adapter模式展现角度,是没有问题的。

已经在insert方法中实现了对打圆形桩的“变压”式调用,实际Adapter模式非常简单,就是一个对象组合应用,看例子时,千万别陷入具体应用功能进去。

谢谢大家。
To banq:
我明白你的意思了,谢谢。