2010-09-07 63 views
5

背景問題的Zend_Log的UML類圖是否正確?

Zend_Log進行的分析揭示出下面的類圖

Zend_Log進行:

  • 使用ReflectionClass & Zend_Log_Exception
  • 保持參考Zend_Log_Writer_Abstract的陣列
  • 保持REF erences到Zend_Log_Filter_Interface接口的陣列

Zend_Log_Writer_Abstract

  • 保持參照Zend_Log_Filter_Interface接口
  • 的陣列保持參照Zend_Log_Formatter_Interface接口

alt text

問題

  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);是一些「設計模式」,如果是的話是什麼名字?

問候!

+1

這些圖表應該是官方文檔的一部分,它們有很多幫助。一旦你確認了,就去告訴有關官員吧! – chelmertz 2010-09-07 16:25:59

+0

不錯!你是否手動執行此操作? – stefgosselin 2011-05-20 11:37:42

+0

@stefgosselin謝謝。我已經使用NClass並手動創建圖 – r0ash 2011-05-25 11:47:42

回答

2
  1. Zend_Log_Filter_SuppressZend_Log_Filter_MessageZend_Log_Filter_Priority都實現了Zend_Log_Filter_Interface接口。這是用空箭頭和它們之間的虛線表示的。 Zend_Log_Formatter_Interface和下面描述的三個類也是如此。

  2. 是的,這是正確的。由於兩個Zend_Log實例可共享單個Zend_Log_Writer_Db實例,因此是否在此處使用關聯( - >)或組合可能會引起爭議。由於作家和過濾器決定了日誌的整體行爲,所以構圖對我來說很有意義。

  3. 每個日誌實例可以寫入多個寫入者。消息首先由日誌自身過濾,並且任何傳遞的消息都傳遞給每個作者。每個作家也過濾收到的消息。這允許您忽略低於WARN優先級(在日誌級別)寫入文件的所有消息,並進一步將數據庫日誌記錄限制爲FATAL級別的日誌。您可以通過刪除日誌級別過濾器數組來完成相同的效果,但是它需要在每個寫入器中重複過濾。