2015-10-20 69 views
0

enter image description here使用GRASP控制器時如何處理用戶輸入?

讓我們假設用戶想要添加一個客戶到系統。他用客戶信息填寫表格,然後按下按鈕。點擊事件由UI層中的表單對象捕獲。誰負責使用用戶提供的信息創建新的客戶對象,表單本身或業務層中的控制器?

在「應用UML和模式」一書中,在我見過的例子中,用戶輸入通過窗體或參數傳遞給控制器​​,然後控制器創建適當的對象。我的疑問是因爲我被告知最好使用對象在層間傳遞數據,而不是一堆參數。

回答

0

這是一個相當廣泛的問題,你很可能會收到大部分opions,而不是問題的解決方案。在我看來(原文如此)顯然不是創建這個對象的責任,而是可能是一個單獨對象的工作(最有可能是factory)。控制器的工作是派遣進入其他服務的工作 - 那就是single responsibility

基於同樣的原因,表單中的對象創建無論如何都不存在問題,但還有另外一個原因不在表單中創建對象:客戶對象屬於業務層(域),而不屬於表示層。 如果您正在討論爲了在不同層之間傳輸數據而創建對象時,此參數將變爲無效僅限於,參見參考資料。 DTO。在這種情況下,如果UI層創建一個CustomerDTO並將其交給控制器(上面關於對象創建責任的討論也適用於此),那就沒問題了。