0

ロギングにアダプタパターンを使用することについて話しています。ロギングの実装を変更することはおそらくないので、これが良い考えかどうかはわかりませんが、これについて話しているときに質問が発生しました。抽象ロギングモジュールは、さまざまなロギング実装の構成の詳細を非表示にする必要がありますか?

アダプターパターンを使用してロギングを抽象化する2つのプロジェクトを見てきました(そのうちの1つは.NET用のCommon Infrastructure Libraryです)。

どちらのプロジェクトでも、クライアントが提供する必要のある構成は、ロギングの実装によって異なります。たとえば、log4netを使用する場合、クライアントはLog4Net構成ファイルを提供する必要があります。

これがアダプタパターンの不完全な実装であると思うとき、私は間違っていますか?私にとって、クライアントが適応者についてある程度の知識を持っている必要がある場合、クライアントを壊さずに実装を交換することはできません...

確信はないけど。

アドバイスありがとうございます。

4

2 に答える 2

1

場合によります。

一般的に私は同意します。クライアントが何らかの抽象化を使用しているにもかかわらず、クライアントがそれを使用するために特定のサービス実装に固有のものを必要としない場合、抽象化は破られます。

しかし、あなたの場合、ロギングライブラリの2つの異なるクライアントを混同していると思います。

1つのクライアントは、その状態に関する情報を世界に発信しようとするアプリケーションです。構成に関係することはありません。

もう1つのクライアントは、アプリケーションの環境を設定する人またはその他のクライアントです。このクライアントは、構成でのみ検討する必要があります。

したがって、アダプタは最初のクライアントにのみ適用され、このクライアントには完了です。

于 2012-04-16T07:48:19.220 に答える
0

アダプタは、純粋な抽象化の目的で、アダプティ固有の実装の詳細を隠す必要があると言っても過言ではありません。理想的には、特定のものに変換する必要がある基本的な構成オプションを使用して、「Configure」メソッドのようなものを指定する必要があります (可能な場合)。

しかし、これは多くの場合、極端な場合があります。

于 2012-04-16T07:40:35.293 に答える