Существует ли специальный шаблон , описывающий сценарий, в котором предоставляется не абстрактная реализация по умолчанию, которая реализует все или некоторые из методов интерфейса с пустым реализацией 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 DefaultHandler в среде SAX и MouseAdapter. В некоторых случаях такие классы называются адаптерами, но у меня создалось впечатление, что шаблон адаптера переводится между двумя разными интерфейсами.
Учитывая, что в этих случаях существует только один объявленный интерфейс, который переводится в подмножество undefined этого интерфейса - я не понимаю, как это находится в духе шаблона адаптера.
Кроме того, я не совсем понимаю, как это относится к NullObject pattern, так как некоторые методы могут иметь реализацию и NullObject традиционно является одиночным.