1

私は自分のアプリケーションの1つにロギングサービスを書いていますが、他の多くのアプリケーションがこれを使用すると確信しています。その場合、アプリケーションでクラスを拡張し、元のクラスですべてのロギングをデフォルトで有効にする(アプリケーションのエントリポイントや出口ポイントなどのロギングが必要になるため)か、アプリケーションをインスタンス化するのが理にかなっていますか?新しいロギングオブジェクトを作成し、必要に応じてロギングステートメントを配置しますか?

4

3 に答える 3

4

新しいロギングオブジェクトをインスタンス化します。結局のところ、あなたのオブジェクトはロガーではありませんか?

ロガーから継承すると、さらに次の問題が発生します

  1. オブジェクトをロガーとして使用できますが、これはおそらく意図されたものではありません
  2. 他のクラスから継承することはできません
  3. 特にランタイムでは、ロギングポリシーを簡単に切り替えることはできません

一般に、2つのクラス間の一般化を描画する場合は、十分に注意する必要があります。

于 2009-11-17T23:26:15.887 に答える
2

新しいロギング サービスを作成するのではなく、既存のロギング フレームワークのいずれかを使用してみませんか? 敬意を表して - それらはあなたが書くものよりもよくテストされ、よりよく文書化されます!

私は継承ルートをたどりません。これにより、早い段階で、進化して変化する可能性のあるクラスに結び付けられます。

于 2009-11-17T23:33:52.663 に答える
0

OOP では、オブジェクトがデータとロジックを収集するという法則を守らなければなりません。

オブジェクトが何らかのタスク (サービス) を実行したり、何らかのデータを操作したりする必要がある場合は、問題ありません。しかし、それはロガーではありません。

ログを作成するには、別のサービスまたはオブジェクトに対してイベントを発生させる必要があります。

また、オブジェクトがロガーについてどのように認識しているかにも注意してください... インジェクション、構成、ファクトリ... それは、ロギング フレームワークとオブジェクト タスクに関するものです。

于 2009-11-17T23:50:58.280 に答える