Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is MouseAdapter an adapter?

The name (and javadocs) imply that MouseAdapter is an adapter (the design pattern). But I don't see it as such - it doesn't adapt anything to anything, at first sight at least

The only adaptation that happens is that you can pass an instance of MouseAdapter to any method that expects either of the interfaces. So, you make it possible to use a MouseListener instance where only MouseMotionListener is expected. But there is no "translation" happening. And it does not conform to the UML of GoF - in the "class adapter" version it is expected that a call to one method invokes a method from the adaptee.

So, is that an adapter (design pattern), or is it just a random name that causes confusion?

like image 311
Bozho Avatar asked Feb 11 '12 21:02

Bozho


2 Answers

MouseAdapter first appeared in Java 1.1 released in Feb 1997. This means that it was developed sometime in 1996 (or 1995?)

UML (in its draft) was completed by 1997.

The first GoF book on design patterns was published in 1995.

So, I don't think that Adapter in MouseAdapter had anything to do with the corresponding design pattern. Or, even if it did, developers just had no unified language to express design patterns which would make it very hard to comprehend the real meaning.

like image 94
Oleg Mikheev Avatar answered Oct 05 '22 23:10

Oleg Mikheev


Yes, it is not an adapter in the sense of GoF pattern because it does not adapt anything. It can be considered an instance of Abstract Class pattern [woolf97]:

The superclass may provide a complete implementation that is a default or minimal implementation.

like image 34
Marcin Wisnicki Avatar answered Oct 05 '22 23:10

Marcin Wisnicki