0

テンプレートメソッドパターンには、抽象的に定義されたスーパークラスがあります。そして、このクラスを拡張する具体的なクラスがあります。

テンプレート メソッドに新しい関数を追加し、一部のサブクラスでオーバーライドするとします (一部のクラスで使用する場合のみ)。他のクラスでは、この新しいメソッドを空 (関数には本体がありません) としてオーバーライドします。

この操作はコードの重複としてカウントされますか?

ここに画像の説明を入力

たとえば、テンプレート メソッドには新しい関数 doA() があります (doA() をフック メソッドとして使用することにしました)。この関数は、Class1 と doZ() と doY() の間でのみ使用したいと考えています。

この関数をテンプレート メソッドに追加し、この関数を Class2 empty でオーバーライドするとします。これはコードの重複と見なされますか?

public void template(){
    doX();
    doY();
    doZ();
}

public void template(){
    doX();
    doY();
    doA();
    doZ();
}
4

1 に答える 1