这真的是适配器模式的一个例子吗?

som*_*guy 7 java design-patterns adapter

我有一个接口 - "EventHandler" - 声明了几个方法.

public interface EventHandler {
    void handleEvent1();

    void handleEvent2();

    void handleEvent3();

    void handleEvent4();
}
Run Code Online (Sandbox Code Playgroud)

我还有一个类 - "EventHandlerAdapter" - 它实现了EventHandler.但是,它实际上并没有"实现"任何东西.关键是,如果另一个类想要实现EventHandler,而不是它的所有方法,它可以简单地扩展EventHandlerAdapter并只覆盖它想要的方法.

public class EventHandlerAdapter implements EventHandler {
    public void handleEvent1() {}

    public void handleEvent2() {}

    public void handleEvent3() {}

    public void handleEvent4() {}
}
Run Code Online (Sandbox Code Playgroud)

我不止一次见过这样的东西.名称"EventHandlerAdapter"向我建议它是适配器模式的一个例子......但它真的吗?我认为适配器的意义在于将现有实现转换为其他实现.我不知道这是怎么回事.

如果它不是适配器模式的示例,它是什么?当然已经发现了类似的事情.

Eri*_*son 9

不,这不是适配器模式的示例,如下所定义:

http://en.wikipedia.org/wiki/Adapter_pattern

但是,在Java事件处理中,如您所提到的,经常使用术语适配器.尽管"Adapter"一词在两者中都是相同的,但它们并不是指相同的东西.出现在java.awt.event包中的适配器可以很容易地创建一个事件处理程序,它只处理一个方法,而不必编写一堆空方法.它们只是快捷类.

Java Event API通常具有这些类的一致命名.当存在SomeEvent事件类时,有一个SomeListener用于监听事件的接口和一个SomeAdapter用空方法实现监听器接口的类.并非所有事件都包含这三个部分,但三者的命名和功能是一致的.

在您提供的示例中,我将重命名该类EventAdapter以与现有Java API保持一致.