Why is MouseAdapter an adapter?

前端 未结 4 450
星月不相逢
星月不相逢 2020-12-10 13:00

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 fir

相关标签:
4条回答
  • 2020-12-10 13:25

    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.

    0 讨论(0)
  • 2020-12-10 13:25

    I know there is already an accepted answer for this question, but this same question was asked here:

    MouseAdapter: which pattern does it use?

    See there for more deatils, but the MouseAdapter adapts the very awkaward MouseListener interface into a more usable form.

    0 讨论(0)
  • 2020-12-10 13:29

    As other answers have said, it's not a GoF Adapter pattern. The main purpose of it is to enable one to implement MouseListener (or MouseMotionListener) by over-riding just the desired methods in MouseAdapter (often just mouseClicked()) rather than having to create pointless empty implementations of all the other methods. It therefore saves a lot of unnecessary code, especially when using anonymous event listeners. For example (taken from here)

        someObject.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                ...//Event listener implementation goes here...
            }
        });
    
    0 讨论(0)
  • 2020-12-10 13:35

    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.

    0 讨论(0)
提交回复
热议问题