[設計]做了一個有問題的設計, 有什麼方法重構呢?

[設計]做了一個有問題的設計, 有什麼方法重構呢?

<< 2012/10/19 這篇是問題文, 尚未找到解法 >>

 

問題點 : 因效能問題, 發現設計上的缺點

 

設計的一角 :

FlowControl 做為控制項物件, 它會依序執行 BeginPoint , ExecPoint , EndPoint,

(註: Point 是可選擇性注入)

可以透過 DI 的方式用設定文件設定 FlowControl 內的Point物件.

所以我可以創造各式各樣的 Job 組合成 Flow 完成作業. (看似很彈性)

類別圖如下:

 

image

 

然後我在某一個case中用一個類別(JobA)去實作了多個Point, 並注入了FlowControl.

 

 

image

 

目前看來都沒什麼問題, 結果 User 反應取消交易時很慢,

經查找效能的元凶是 terminate( ),

因為對 FlowControl 來說每一個 Point 是獨立的物件,

FlowControl 在實作 terminate( ) 時是依序呼叫 Point 的 terminate(),

但實際上我是用單一類別 JobA 實作, 故只有一個 terminate( ),

所以會多次回呼同一類別(JobA) 的 terminate( ) , 導致了效能不彰.

 

目前還在想解法中 ...

91 哥有提示 : "責任鏈"