簡単に言えば、デコレータパターンを理解しています。あるクラスが別のクラスをラップするという考え方で、デコレータメソッドは、装飾されたオブジェクトで同じメソッドを呼び出す前および/または後に他のコードを実行したいと考えています。
しかし、望ましくない副作用があるため、decoratedメソッドを単純に呼び出すことができない状況に遭遇しました。しかし、私はその装飾されたメソッドの多くを実行したいと思っています。
したがって、decoratedメソッドを複数のメソッドに分割する必要があると思います。次に、デコレータでそれらのいくつかを呼び出し、装飾コードを実行してから、他のいくつかを呼び出すことができます。不要な副作用を見逃します。
ただし、ポリモーフィズムを維持するためには、decoratedオブジェクトとdecoratorオブジェクトが実装するインターフェイスにこれらのメソッドを追加することを意味します。これは望ましくありません。それらは公開されるべきではなく、それは事実上、装飾されたクラスがそれがどのように装飾されるかについての知識を持っていることを意味します。
テンプレートパターンの方がおそらくより適切であると思います。抽象基本クラスがそれぞれの小さなメソッドを順番に呼び出し、「デコレータ」が関心のあるメソッドの代替実装を提供するだけです。しかし、これは正確には「継承よりも構成」ではないので、何をお勧めしますか?