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