Implementation是Component內部的根,其他種類的Class都可以在這裡取到(除了Exception,因為它只在有錯誤時另行產生),因此我們需要定義出對應的屬性來保存他們,定義的語法如下。採用protected是要讓所有Component實作時都可以拿到物件來操作。
protected BaseFlowInterface flow = null;
protected BaseActionInterface action = null;
protected BaseModelInterface model = null;
protected BasePropertiesInterface properties = null;
Implementation也是Component Interface的入口,一切實作的機制會由此開始運作,參數也應該由此傳入。為了避免參數檔在內部讀取的綁死現象同時允許在任何時機更換參數物件,宣告setProperties(BasePropertiesInterface)並開放在BaseInterface中,讓外部程式依時機呼叫。
Properties已定義從外部傳進來,其他的Model、Flow與Action被設計為從Properties讀入定義值後自行生成物件。在此定義三個final的private方法createModel()、createFlow()與createAction()並放置在initialObject()的時候呼叫,並在disposeObject()的時候逆向清空。(properties雖是由外部設定,但因為它可能會有值還是下個清空動作比較安全)
private final void createModel();
private final void createFlow();
private final void createAction();
這三個內部物件也同時提供了三個對應取得方法:getModel()、getFlow()與getAction(),加上getProperties()形成內部相互存取的橋樑。前三個方法定義在BaseImplInterface提供內部使用,最後一個定義在BaseInterface作為Component的必須方法。
另外基於Interface Method的唯一出口與入口要求,準備兩個protected方法在Interface Method的進入與結束時固定呼叫。在此時還不知進出之間需要做什麼事,宣告為Abstract Method留待製作系統根本Component時再依專案需求定義。
protected abstract void beforeInvoke();
protected abstract void afterInvoke();
這是基本Component裡的Implementation的結構。
2009年1月18日 星期日
T06 基本Component內部(1)──Implementation
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言