私はChainHandlerと呼ばれる抽象クラスとChainHandlerの多くの実装を持っています。
他のプログラマーは、そのChainHandlerの他の実装を作成します。
私のプログラムはChainofResponsibilityデザインパターンを実装しています。
ChainHandlerの具体的な実装はそれぞれ、handleメソッドを実装します。
public abstract void handle(SomeclassA a);
1つのハンドラーが「a」を処理できる場合、それを処理してチェーンを停止します。そうでない場合、「a」はチェーンの最後に到達するまで次のハンドラーに渡されます。
各具象ハンドラーに、処理できたすべての「a」のリストを持たせたい。しかし、具体的なクラスの開発者に、成功時にリストに書き込むことを忘れないようにしたくありません。
それを行うためのエレガントな方法はありますか?
私の最高のアイデアは次のとおりです。
1-handleメソッドをconcreteクラスでprotectedに変更し、ブール値を返すようにして、名前をinnerhandleに変更します。
2-抽象クラスのhandleメソッドをpublicに変更すると、innerhandleが呼び出されます。成功すると、オブジェクトがリストに追加されます。