2008年4月9日 星期三

N09 令人感到麻煩的設計(14)──Component間的避震器

Component更應該要堅守使用專用Data Model的原則,因為Component之上是各式各樣不同的其他元件以及系統。只要兩個以上的Component使用了同一種Data Model,即使二者之間並沒有直接呼叫對方的Method,兩者還是產生了間接的使用關聯。

如果在設計上它們不應該產生使用同一種Data Model的關係,那麼應該先讓兩個Component使用各自的Data Model,並另寫一個資料轉換的函式負責在兩種不同的Data Model間搬移內部的資料,或者是在系統裡準備一個共用的系統資料區,在全部需要準備Component Data Model的情況下都與系統資料區作資料的交換。在開發系統時我比較偏好後者,縱使需要為每個Component撰寫一個資料轉換程式,卻可以保證在同一系統下是同一種作法。

在動作方面,可能某一個系統的動作需要同時使用數個Component的方法,直接依序把Component Method放到系統動作方法裡是直覺的設計。但是在分析階段時,必須要檢視是否有一個系統動作需要同時執行數個Component Method的狀況,如果有的話還是另外抽取一個系統方法存放為佳。

無論是Method或是Data,在有差異存在時務必要安排一個物件(而且只有一個)來負責填補其間的差異,以期在使用時能夠直接呼叫而感覺不出有差異。

沒有留言:

張貼留言