2008年4月30日 星期三

O10 我的設計準則(4)──靈活替換

一個以“滿足客戶既定需求”為目標的系統,只是勉強及格而已。因為無論是需求的改變或是因為要修正之前沒有被測出的錯誤,都會造成在固定結構下的變動而使得問題因為失衡而接二連三地發生。因此,彈性的設計雖然對實現功能沒有直接影響,卻能夠避免未來的巨大風險。

彈性設計的首要,在於切割出可以置換的單位。一個只能置換整個元件的設計,極可能在只有流程變動略大時就需要重新放上一個內容幾近相同的另一個元件;因此除了儘量應用參數化的設計外,我把元件的內部切割為六種特性放置屬於該部分的程式碼,每一個部分都可以根據實際的需要來改變實作的類別。

另一個要求是使用介面來定義切割出來的單位。要能靈活置換必須應用OO裡的多形特性,利用介面定義好切割單位的規格並在上層的程式使用,再用動態變換的設計(例如Design Patterns)更換實際工作的物件以應付不同的需要。

靈活替換還有一個重要的目標是使用較少的程式碼來達成較複雜的動作。像是Class、Constructor、Method等Java物件,以及Method所能涵蓋的getter、setter的資料存取方法,活用這些映射物件將有助於快速的開發與動態的改變。

沒有留言:

張貼留言