空の 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()
}
}
SAX フレームワークの Java の DefaultHandlerやMouseAdapterなど、このパターンが何度も使用されているのを見てきました。場合によっては、そのようなクラスはアダプターと呼ばれますが、アダプター パターンは 2 つの異なるインターフェイス間で変換されるという印象を受けました。
これらのインスタンスでは、そのインターフェイスの未定義のサブセットに変換されている宣言されたインターフェイスが 1 つしかないことを考えると、これがアダプター パターンの精神にどのように含まれているかは明確ではありません。
さらに、いくつかのメソッドが実装を持つ可能性があり、NullObject は伝統的にシングルトンであることを考えると、これがNullObject パターンにどのように準拠しているかはよくわかりません。