5

質問の背景

Zend_Log を分析すると、次のクラス図が明らかになります

Zend_Log:

  • ReflectionClass と Zend_Log_Exception を使用
  • Zend_Log_Writer_Abstract の配列への参照を維持します
  • Zend_Log_Filter_Interface の配列への参照を維持します

Zend_Log_Writer_Abstract

  • Zend_Log_Filter_Interface の配列への参照を維持します
  • Zend_Log_Formatter_Interface への参照を維持します

代替テキスト

質問

  1. Zend_Log_Filter_Interface は、図のように Zend_Log_Filter_Suppress、Zend_Log_Filter_Message、Zend_Log_Filter_Priority と関連していますが、これはクラス図に正しく配置されていますか?
  2. Zend_Log には Zend_Log_Filter_Interface の配列への参照が含まれており、これは合成関係 (Zend_Log_Writer_Abstract と同様) であると言ってもいいでしょうか?
  3. Zend_Log_Filter_Interface が Zend_Log と Zend_Log_Writer_Abstract の両方に含まれていることは明らかなため、Zend_Log には Zend_Log_Writer_Abstract が含まれているため、Zend_Log_Filter はコンテナー (Zend_Log) とコンテナー (Zend_Log_Writer_Abstract) の両方から参照されます。それは「デザインパターン」ですか? はいの場合、名前は何ですか?

よろしく!

4

1 に答える 1

2
  1. Zend_Log_Filter_SuppressZend_Log_Filter_Message、およびZend_Log_Filter_Priorityすべてがインターフェイスを実装しZend_Log_Filter_Interfaceます。これは、空の矢印とそれらの間の点線を使用して示されます。Zend_Log_Formatter_Interfaceおよびその下に示されている 3 つのクラスについても同様です。

  2. それは正解です。Zend_Log2 つのインスタンスが 1 つのインスタンスを共有する可能性があるため、ここで関連付け (-->) を使用するか、構成を使用するかは議論される可能性がありZend_Log_Writer_Dbます。ライターとフィルターがログの全体的な動作を決定するため、構成は理にかなっています。

  3. 各ログ インスタンスは、複数のライターに書き込むことができます。メッセージは最初にログ自体によってフィルター処理され、渡されたメッセージはすべてのライターに送られます。各ライターは、着信メッセージもフィルタリングします。WARNこれにより、ファイルに書き込まれる優先度 (ログ レベル)より下のすべてのメッセージを無視し、データベース ログをそのFATALレベルのメッセージにさらに制限できます。ログレベルのフィルター配列を削除することで同じ効果を達成できますが、各ライターでフィルター処理を複製する必要があります。

于 2011-02-07T01:01:50.497 に答える