テンプレートメソッドパターンには、抽象的に定義されたスーパークラスがあります。そして、このクラスを拡張する具体的なクラスがあります。
テンプレート メソッドに新しい関数を追加し、一部のサブクラスでオーバーライドするとします (一部のクラスで使用する場合のみ)。他のクラスでは、この新しいメソッドを空 (関数には本体がありません) としてオーバーライドします。
この操作はコードの重複としてカウントされますか?
たとえば、テンプレート メソッドには新しい関数 doA() があります (doA() をフック メソッドとして使用することにしました)。この関数は、Class1 と doZ() と doY() の間でのみ使用したいと考えています。
この関数をテンプレート メソッドに追加し、この関数を Class2 empty でオーバーライドするとします。これはコードの重複と見なされますか?
public void template(){
doX();
doY();
doZ();
}
public void template(){
doX();
doY();
doA();
doZ();
}