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"向我建议它是适配器模式的一个例子......但它真的吗?我认为适配器的意义在于将现有实现转换为其他实现.我不知道这是怎么回事.
如果它不是适配器模式的示例,它是什么?当然已经发现了类似的事情.
不,这不是适配器模式的示例,如下所定义:
http://en.wikipedia.org/wiki/Adapter_pattern
但是,在Java事件处理中,如您所提到的,经常使用术语适配器.尽管"Adapter"一词在两者中都是相同的,但它们并不是指相同的东西.出现在java.awt.event包中的适配器可以很容易地创建一个事件处理程序,它只处理一个方法,而不必编写一堆空方法.它们只是快捷类.
Java Event API通常具有这些类的一致命名.当存在SomeEvent事件类时,有一个SomeListener用于监听事件的接口和一个SomeAdapter用空方法实现监听器接口的类.并非所有事件都包含这三个部分,但三者的命名和功能是一致的.
在您提供的示例中,我将重命名该类EventAdapter以与现有Java API保持一致.