2015-04-06 71 views
1

Clean Architecture由羅伯特·馬丁,讓我們說我有這樣的簡化版本(不顯示其他的東西,如型號,網關,邊界):清潔架構 - 控制器是否應該與演示者交談?

enter image description here

現在讓我們假設我有一個View,2個按鈕,DarkLight,點擊時應改變View的背景顏色並在屏幕上顯示一些文本(文本的顏色應始終爲藍色)。 所以我雖然大概是這樣:

enter image description here

這裏假設我有在控制器的兩個按鈕(也許是因爲它是一個形式或其他)使用一種方法,在buttonClicked(button)button變量包含關於是否按下了DarkLight按鈕的信息。

現在,在這種情況下Interactor只負責檢索要顯示的文本,但它不需要知道關於背景顏色的任何信息。

因此,控制器是否應該告訴演示者選擇了哪種顏色(即按鈕),或者我應該將此信息傳遞給Interactor,以便它可以將它傳遞給Presenter?請記住,Interactor甚至不會使用此信息。

+0

@ctietze你對此有何看法? – 2015-04-06 06:17:12

回答

0

如果交互者沒有使用該信息,則信息只能用於視圖中的格式化目的。因此,您需要了解您的觀點(不是視圖模型,而不是演示者)是如何實施的。您選擇的視圖格式必須能夠響應用戶輸入,這將反過來影響格式。

例如,如果視圖是HTML,則在瀏覽器中查看,您只需使用javascript來監聽按鈕單擊並更改顏色。只需要演示者將用例中的響應轉換爲視圖模型(上例中的文本)。視圖使用視圖模型來渲染數據,這取決於其選擇的格式。

你可能還想看看的是爲什麼你提供不同的顏色。您可能正嘗試通過顏色選擇向用戶指示系統的某些狀態。在那種情況下,按鈕按下可能對用例是有用的。按按鈕意味着電子商務網站上的商品被標記爲已發貨。

在這種情況下,您不會將顏色向前或向後傳遞,但某些業務狀態shipment = true。

然後,您的用例將返回給演示者您的文本併發送= true。演示者然後會在您的視圖模型上設置運行= true。該視圖然後將改變顏色,取決於在視圖模型上發貨是真還是假。