2007年8月19日 星期日

D08 Component的設計(3)──Controller & Action之二

Component的設計與系統一樣,方法進入後會由負責執行流程的Controller來操作實際的動作來完成功能,而Controller流程裡分解動作的實作都放置在Action。控制不變而動作有變時就更換不同的Action,控制改變而動作不變時就更換不同的Controller,兩者都改變時就把Controller與Action都更換掉。

經由這樣的設計,我們可以達成在Component不變的情況下,只要輸入不同的參數就能夠改變Component內部的運作。另一個好處是,當Controller與Action有新增的狀況時,改變都封裝在Component裡而不影響系統;如果在系統上使用Factory來切換元件的話,改變就必須由系統層面來處理。

元件的Controller裡如果使用了其他的元件而且會拋出其他元件的Exception的話,務必記得要在這裡捕捉下來並轉成自己的Exception丟出去。我們應該讓下層的動作只傳到自己這一層,上一層只會收到這層丟出的東西;否則下面所有的物件全都往上丟,就會造成上一層與下一層、下下一層、下下下一層……的所有元件都產生使用的關聯,這是設計時絕對要避免的。

沒有留言:

張貼留言