2009-11-17 74 views
1

我正在爲我的一個應用程序編寫日誌記錄服務,但我相信很多其他應用程序會使用它。在這種情況下,讓應用程序擴展一個類並讓所有日誌記錄默認啓用(因爲某些日誌記錄,如應用程序入口點和退出點,無論任何代價都是必需的),還是讓原始類實例化一個新的日誌記錄對象,然後在需要的地方放置日誌語句?Java:實例化還是繼承?

回答

4

實例化一個新的日誌記錄對象。你的物體畢竟不是伐木工,是嗎?

如果從記錄器繼承,你還得到了以下問題

  1. 你的對象可以作爲記錄這可能不是什麼它是爲
  2. 你不能從其他類繼承
  3. 你不能輕易地登錄交換機的政策,尤其是在運行時

一般情況下,一個人應該非常小心,當談到拉拔T之間的泛化wo類。

+0

謝謝。我認爲這些問題對我來說很清楚。 – Legend 2009-11-17 23:44:25

2

而不是創建一個新的日誌服務 - 爲什麼不使用其中的一個日誌框架呢?所有應有的尊重 - 他們將比任何你寫的更好的測試和更好的文件記錄!

我不會沿着繼承路線走下去,這會使你在早期階段與一個可能發展和改變的階級聯繫起來。

+0

你說得對。我最好使用現有的日誌記錄庫。我之所以想到這個唯一的原因是因爲它不是一個完整的日誌記錄服務,而且還提供了一些項目特定的功能。無論如何,謝謝你的回覆。 – Legend 2009-11-17 23:45:11

0

在OOP中,您必須遵守對象收集數據和邏輯的規律。

如果您的對象必須執行一些任務(服務)或操作某些數據,那麼沒關係。但它不是一個記錄器。

您應該將事件觸發到另一個服務或對象來執行日誌。

還要小心你的對象如何知道記錄器......注入,組合,工廠......這是關於你的日誌框架和你的對象任務。