2009年3月13日 星期五

U05 第一個元件(2)──Log記錄器

ApplLog是處理所有元件Log記錄的底層元件,執行ComponentUtilUI以下圖的數據建立ApplLog。

ApplLog不需要Model與Exception兩個部分,所以刪除相關檔案。在ApplLogInterface定義所有提供給外部操作的log方法,在ApplLogConstantInterface定義各種等級的常數;常數與方法會分開成兩個Interface的原因在於繼承時會有只使用常數與使用常數加方法的不同需要。

ApplLogImplAbstract裡實作Interface的所有方法都轉呼叫Flow內同樣的方法,並且要在呼叫前後包裝beforeInvoke()、afterInvoke()。
  public void trace(ComponentImplInterface impl, Object message) {
    beforeInvoke();
    getApplLogFlow().trace(impl, message);
    afterInvoke();
  }

ApplLogFlowAbstract要做的是判斷要記錄的等級是否小於等於規定的等級,然後呼叫ApplLogActionAbstract的動作。在這兩層裡的設計結果有許多不同的組合,最後使用最趨近設計準則的結果:Action提供整合的的記錄方法在內部轉呼叫LogUtil的各個方法,Flow呼叫檢查等級方法於需要記錄時傳入現有等級到Action的整合方法。

最後將實作Class名稱中的Default拿掉使之容易記憶使用,需要記錄log時呼叫ApplLog.getInstance()取得元件物件後即可呼叫所有等級的方法。

沒有留言:

張貼留言