2009年3月20日 星期五

U07 元件結構調整與基本Properties名稱

目前元件結構有以下所列的三個調整:

元件用的常數拉出為獨立介面。雖然大家時常把常數與方法定義在同一個Interface裡,但是ApplLog只想使用LogUtil裡定義的常數時連方法也必須實作,因此將常數與方法切割為兩個Interface。實作時介面直接繼承後即可使用。不過這樣的繼承法雖然方便,卻也表示ApplLog與LogUtil已經緊密綁在一起,從意義上來看應該在ApplLog的常數Interface定義自己的記錄等級常數才對。(為了記錄等級的一致化,甚至要定義一個管理LogLevel的Class專門提供一致的記錄等級常數;這被定義為LogConstantInterface)

Flow與Action分工的界限。在ApplLog第一次設計時,Implementation、Flow與Action都定義同樣的一群方法直接從最外層呼叫進去,在Action裡才一次checkLogLevel()並呼叫LogUtil記錄,這種寫法可以達成目標,但完全不符合判斷流程要放在Flow的準則。在Flow與Action之間的流程與分解動作定義是設計時需要注重的部分。

Null Object的建立。由於ApplLog的Flow與Action並不是預設的名稱,最底層的基本Component在生成與使用時會發生NullPointException。加上一大堆判斷物件是否為null的程式看起來很沒效率,因而在無法生成物件時一律生成該物件名稱的Null Object。Null Object需要實作該介面的所有方法,但完全沒有任何處理而直接回傳正確的結果;如此一來會使程式碼簡潔許多。

在Root Component這層共有四個可定義的參數:
  public final static String CLASS_MODEL = "classModel";
  public final static String CLASS_FLOW = "classFlow";
  public final static String CLASS_ACTION = "classAction";
  public final static String LOG_LEVEL = "logLevel";

沒有留言:

張貼留言