前書き
処理フレームワークの抽象Javaクラスを実装しています*。関数を実装することでexecute
、ビジネスの論理機能を追加することができます。すべての実行関数のすべての実装の最初と最後にロギングを追加したいと思います。また、特定の処理が行われた場合、ロギングの合間にも実行されます。でもこれを一律に作りたい。私の考えは、ロギングを実装executeWithLogging
し、特定の部分にロギングをラップするいくつかの新しい機能を提供する独自の新しいクラスにフレームワーククラスを継承することでした。それが最高のアイデアかどうか、全体がエレガントになるようなデザインパターンを使用できるかどうかはわかりません。全体をどうやって進めますか?
課題(これらを考慮してください!)
- 私の場合の1つの課題は、元のクラスには1つの
execute
関数しかないということですが、複数の部分をログに記録する必要があります。 - 2つ目は次のとおりです。Decoratorパターンを使用して、私も使用している場合ではなく、かなりの仕事ん(だけでなく、私の最初のアイデアだった)
execute
ので、super.execute()
-functionは私の新しいの最初の行で呼び出さなければならないexecute()
、そうではありません? - 関連する少なくとも4つのクラスがあり、次のようになります。
BaseFunction
フレームワークからLoggingFunction extends BaseFunction
私から、MyBusinessFunction extends LoggingFunction
私から、MyBusinessClass
instanciatesMyBusinessFunction
。 - の最初と最後だけでなく
execute
、途中でもロギングが必要です。 - 「ロギング」は単純なJavaロギングではなく、実際にはデータベースへのロギングです。これは原則については何も変更しませんが、ロギングが単なる1行のコードではない場合があることを示しています。
たぶん、私がすべてを行う方法の例は、私を動かすのにいいでしょう。
| *ストームトライデント関数。ストームボルトに似ていますが、これは特に重要ではありません。
execute
にBaseFunction
抽象?
execute
で抽象的ですBaseFunction
。