2009-08-26 44 views
2

...以及如何最好地處理視圖層的成功/失敗反饋。多值對象上的業務邏輯 - 放置循環的位置?

選項包括:

doBusinessLogic(things) 

for (Thing thing : things) { 
    doBusinessLogic(thing) 
} 

假設我們想接收以一致的方式成功/錯誤反饋的視圖層(即,從上值對象的單個或多個操作)什麼是最好的方法?

澄清:從視圖層中的業務邏輯調用拋出

處理多個異常類型是重碼,也使得維護問題(新的例外是引入了表示層不知道)。對於業務邏輯調用來說,處理多個值對象上的錯誤並將它們「打包」以使視圖以一致的方式處理似乎更好。

回答

1

如何沿着你的一項建議的路線的東西:

for (businessObject : businessObjects) { businessObject.doBusinessLogic() } 

的想法是把業務邏輯的業務對象的方法。您的視圖層可以遍歷所有業務對象,告訴每個業務對象執行業務。它們的業務如何處於業務層的業務對象邏輯中。您可以通過從doBusinessLogic方法返回值或通過拋出異常發生異常來處理錯誤等。

如果您正在執行跨業務對象邏輯(即對多個單一業務對象進行操作的邏輯),也許可以構建一個businessObjectManager類,該類可能具有接收一個或多個業務對象並操作的方法在他們。因此,通過將管理器對象放在業務層中,您仍然將業務邏輯保留在業務層中。

+0

我非常喜歡經理的想法 - 它可以作爲一個策略來處理批量,等等。最終,我不認爲有一個最好的解決方案 - 只是在給定的情況下效果最好。 – ireddick 2010-03-25 14:24:31

0

最終我選擇了前一個選項,並創建了一個輕量級的通用「結果包」類,該類封裝了對象集合的動作成功和失敗。成功或失敗的關鍵在於相應的對象標識符。

bundlesis填充在每個業務邏輯調用中並返回到視圖層。 '執行操作對象'業務邏輯循環中引發的異常被捕獲,並且相應的故障被添加到結果包(鍵入對象ID)。

視圖層有一個簡單的幫助方法,它向用戶呈現結果包中包含的反饋。

這很有效。

我認爲你採取的方法是最適合你的系統。