[設計]做了一個有問題的設計, 有什麼方法重構呢?
<< 2012/10/19 這篇是問題文, 尚未找到解法 >>
問題點 : 因效能問題, 發現設計上的缺點
設計的一角 :
FlowControl 做為控制項物件, 它會依序執行 BeginPoint , ExecPoint , EndPoint,
(註: Point 是可選擇性注入)
可以透過 DI 的方式用設定文件設定 FlowControl 內的Point物件.
所以我可以創造各式各樣的 Job 組合成 Flow 完成作業. (看似很彈性)
類別圖如下:
然後我在某一個case中用一個類別(JobA)去實作了多個Point, 並注入了FlowControl.
目前看來都沒什麼問題, 結果 User 反應取消交易時很慢,
經查找效能的元凶是 terminate( ),
因為對 FlowControl 來說每一個 Point 是獨立的物件,
FlowControl 在實作 terminate( ) 時是依序呼叫 Point 的 terminate(),
但實際上我是用單一類別 JobA 實作, 故只有一個 terminate( ),
所以會多次回呼同一類別(JobA) 的 terminate( ) , 導致了效能不彰.
目前還在想解法中 ...
91 哥有提示 : "責任鏈"