为什么 MouseAdapter 是一个适配器?

2022-09-04 02:00:32

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

发生的唯一适应是,您可以将 的实例传递给任何需要任一接口的方法。因此,您可以使用仅预期存在的实例。但是没有“翻译”发生。它不符合GoF的UML - 在“类适配器”版本中,预计对一个方法的调用会从适配器调用一个方法。MouseAdapterMouseListenerMouseMotionListener

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


答案 1

MouseAdapter首次出现在1997年2月发布的Java 1.1中。这意味着它是在1996年的某个时候开发的(或者1995年?

UML(在其草案中)于1997年完成

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

所以,我不认为适配器与相应的设计模式有任何关系。或者,即使确实如此,开发人员也没有统一的语言来表达设计模式,这将使理解真正的含义变得非常困难。MouseAdapter


答案 2

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

超类可以提供默认或最小实现的完整实现。


推荐