Wzorzec projektowy dla domyślnej implementacji z pustymi metodami
Czy jest jakiś szczególnywzór projektu opisuje scenariusz, w którym dostarczana jest domyślna implementacja nie abstrakcyjna, która implementuje wszystkie lub niektóre metody w interfejsie z pustymi implementacjami NO-OP. Dokonuje się tego z zamiarem złagodzenia podklas z ciężarem wdrażania metod, których sami nie potrzebują / nie używają:
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()
}
}
Widziałem ten wzór wykorzystywany wiele razy, w tymDefaultHandler Java w strukturze SAX, iMouseAdapter. W przypadkach somes takie klasy są nazywane Adaptery, ale miałem wrażenie, że wzorzec adaptera tłumaczy się między dwoma różnymi interfejsami.
Biorąc pod uwagę, że w tych przypadkach istnieje tylko jeden zadeklarowany interfejs, który jest tłumaczony na niezdefiniowany podzbiór tego interfejsu - nie jestem pewien, jak to jest w duchu wzorca adaptera.
Co więcej, nie do końca rozumiem, jak to jest zgodne zWzór NullObject albo, biorąc pod uwagę, że niektóre metody mogą mieć implementację, a NullObject jest tradycyjnie singletonem.