有没有一个特定的设计模式,描述了这样一种情况:提供非抽象默认实现,它使用空的NO-OP实现来实现接口上的所有或某些方法。这样做是为了减轻子类实现它们自己可能不需要/使用的方法的负担:
public interface MyInterface {
public void doThis();
public void doThat();
public void done();
}
public class MyClass implements MyInterface {
public void doThis() {
// NO-OP
}
public void doThat() {
// NO-OP
}
public void done() {
// Some standard implementation
}
}
public class MuSubClass extends MyClass {
public void doThat() {
// Subclass only cares about doThat()
}
}
我曾多次见到这种模式的使用,包括Java SAX框架中的DefaultHandler和MouseAdapter。在某些情况下,这些类被命名为适配器,但我认为适配器模式是将两个不同的接口进行转换。
由于在这些实例中只声明了一个接口,而该接口被翻译为该接口的未定义子集,因此我不清楚这如何符合适配器模式的精神。
此外,我不太明白这如何符合NullObject模式,因为某些方法可能具有实现,而NullObject通常是单例。
handle(T event)
方法的类型化事件处理程序IEventHandler<T extends Event>
。 - Matthias