Entwurfsmuster für die Standardimplementierung mit leeren Methoden

Gibt es eine bestimmteEntwurfsmuster Das beschreibt das Szenario, in dem eine nicht abstrakte Standardimplementierung bereitgestellt wird, die alle oder einige der Methoden auf der Schnittstelle mit leeren NO-OP-Implementierungen implementiert. Dies geschieht mit der Absicht, Unterklassen mit der Last der Implementierung von Methoden zu entlasten, die sie selbst möglicherweise nicht benötigen / verwenden:

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()
    }
}

Ich habe dieses Muster einige Male gesehen, einschließlichJavas DefaultHandler im SAX-Framework, undMausadapter. In einigen Fällen werden solche Klassen als Adapter bezeichnet, aber ich hatte den Eindruck, dass das Adaptermuster zwischen zwei verschiedenen Schnittstellen übersetzt wird.

Da in diesen Fällen nur eine deklarierte Schnittstelle in eine undefinierte Teilmenge dieser Schnittstelle übersetzt wird, ist nicht klar, wie dies im Sinne des Adaptermusters ist.

Außerdem verstehe ich nicht ganz, wie sich das an die hältNullObject-Muster Dies gilt auch, da einige Methoden eine Implementierung haben könnten und das NullObject traditionell ein Singleton ist.

Antworten auf die Frage(9)

Ihre Antwort auf die Frage