2012-02-02 116 views
0

我有不同類型的任務存儲在數據庫中。我需要從DB獲取任務並在其相應的服務中運行每個任務(例如,AService處理ATask對象,BService處理BTask對象等)。還有一個TaskController類來協調任務的執行。彈簧控制器和服務設計

哪個是更好的設計 -

1.Have控制器獲取所有活動的任務和每個任務發送到相應的服務。

2.讓每個服務獲取並執行與它相關的所有任務(在這種情況下,控制器必須遍歷所有定義的服務並激活它們)。

回答

1

我會去解決方案1,除了應該創建一箇中間服務來處理你想要放入控制器 - 加載和調度任務。

另外我聞到大胖子switch或一個if s的級聯,也許與instanceof。我想你可以從chain of responsibility pattern中受益 - 詢問第一個服務是否可以處理任務。如果它不能 - 傳遞給第二個等等。

如果每個任務都是公共類的獨立子類,則另一種方法是visitor

+0

我故意將調度部分放在這個問題之外,我認爲這是一個不同的問題(在任何情況下我都不會使用開關/ ifs)。 – Alex 2012-02-02 10:15:02