2010-01-15 46 views
1

我一直在爲我的UserGetRuleViolations()方法,但我開始有點掛了的東西:漢鼎複雜的驗證場景

當不同的操作需要會發生什麼不同的業務規則?

User表有以下欄目:IdUserRoleIdUsernamePassword。涉及到User的幾個操作是可能的(創建新用戶,編輯用戶,設置/重置密碼和登錄),並且每個操作的業務規則並不總是相同的。

例如,當用戶登錄時,他們需要輸入密碼,但是當管理員創建新用戶時,輸入密碼甚至不是一個選項。並且在設置/重置密碼的情況下,需要輸入密碼兩次,這兩個值需要完全匹配。處理這種複雜性的最佳方法是什麼?是否有某種設計模式允許在正確的情況下選擇正確的GetRulesViolations()方法?

回答

0

至於#1,業務規則將不存在於您的數據庫中,它們將存在於應用程序中,無論是在域層,單獨的業務層等等還是在您的控制器中,取決於你的方法。

您將向正在創建用戶的登錄管理員呈現一個不同的屏幕或視圖,而不是您將呈現給正在創建帳戶的未經身份驗證的用戶,對嗎?該視圖中的HTTP-POST將對應於不同的操作,該操作將直接處理邏輯,或委託給適當的對象。一種方法將檢查提供的密碼,併爲用戶創建記錄或將用戶重定向到某種失敗頁面(例如,「密碼不匹配」或「用戶名已被佔用」)。另一種方法是在數據庫中創建一個新用戶,不問任何問題。

發佈到不同操作的不同視圖,對應於不同的方法,每個視圖處理單個特定的作業/場景。

+0

感謝您的回答,但我認爲我的第一個問題可能有點不清楚。我已經有了不同的視圖(例如,用戶/登錄,用戶/創建,用戶/編輯,用戶/編輯密碼等)。我需要的是一個驗證系統,爲正確的操作/視圖選擇正確的「GetRuleViolations()」方法。我正在尋找關於如何設計我的課程等的建議來做到這一點。 – devuxer 2010-01-15 07:20:26