为什么MouseAdapter是适配器?

Boz*_*zho 13 java design-patterns

名称(和javadocs)意味着它MouseAdapter是一个适配器(设计模式).但我并没有这样认为 - 至少乍一看它并没有适应任何东西

发生的唯一适应是您可以将实例传递MouseAdapter给任何需要任一接口的方法.因此,您可以使用MouseListener只有MouseMotionListener预期的实例.但是没有"翻译"发生.并且它不符合GoF的UML - 在"类适配器"版本中,期望对一个方法的调用从适配器调用方法.

那么,这是一个适配器(设计模式),还是只是一个引起混淆的随机名称?

Ole*_*eev 13

MouseAdapter首次出现在19972月发布的Java 1.1中.这意味着它是在1996年(或1995年)的某个时候开发的.

UML(草案中)于1997完成.

关于设计模式的第一本GoF书籍于1995出版.

所以,我不认为Adapter in MouseAdapter与相应的设计模式有任何关系.或者,即使它确实如此,开发人员也没有统一的语言来表达设计模式,这使得很难理解真正的意义.


Mar*_*cki 5

是的,它不是GoF模式意义上的适配器,因为它不适应任何东西.它可以被认为是抽象类模式的一个实例[ woolf97 ]:

超类可以提供完整的实现,这是一个默认或最小的实现.