2007年8月26日 星期日

D15 令人感到麻煩的設計(2)──所有水平層次的設計

在設計每一個層次時,我們同樣也可能會遇到其他人送來的設計圖長得類似下圖。他想表達的是三個不同的元件各有其定義的介面與實作的入口類別。



不管我們怎麼決定設計,其實該有的東西都有的話系統應該都能正常做出來。但設計的目的除了讓每個物件各司其職之外,另一個重要的目的是要去蕪存菁,把重覆的程式碼集中到上一層的類別裡。上面的設計因為實作直接對應介面而沒有任何父類別,因而造成每個實作類別都得存放所有的程式碼在裡頭;那麼上一篇提到的介面基本方法就會到處都是。

理想的設計,還是必須多花一點功夫設計一個BasicCompInterface與BasicCompImpl來收集通用的屬性與方法,實際使用的元件繼承他們之後再撰寫自己的介面與實作。如果元件衍生時有因專案類型而適用在不同行業時,最好針對每一種專有的行業再設計一組對應的介面與實作,如此才能把不同的屬性與方法放置在他們應該存在的層級,而且可以快速篩選出適用特定行業的元件。

沒有留言:

張貼留言