我是開發新手,最近正在實踐MVVM設計模式。要在ViewModel &控制器之間進行通信,我正在使用Closure。我知道我也可以使用委託。但是有沒有什麼傳統或理由,我應該遵循什麼特別的方式來進行溝通。我有點困惑。任何幫助將不勝感激。ViewModel和Controller之間進行通信的最佳方式
6
A
回答
7
我也尋找這個答案,我發現這一點,
業務邏輯層(BLL)將打破關注分離(SOC)。您正在準備的數據駐留在BLL中,所以基本上你會說「嘿BLL爲我執行這個UIL邏輯」。這是一個SOC。 (在此處查找更多https://en.wikipedia.org/wiki/Separation_of_concerns。)
BLL應僅通過委託通知與UIL進行通信。 BLL基本上這樣說:「嘿UIL,我完成了我的邏輯,這裏有一些數據參數,你可以用它來操作UI控件。」
所以UIL不應該要求BLL爲他執行UI控制邏輯。只應要求BLL通知他。
這是鏈接,您將看到更清晰的視圖。
+0
感謝您的時間和鏈接。 – MarkMe
0
您有很多選擇,具體取決於您的應用程序的結構。一個是使用單身人士。我更喜歡這種方法不是太複雜的應用程序。位於單例類中的數據處理(存儲,結構化)。訪問這個單例類的數據的不同視圖。例如,你有一個名爲DataManager的單例或類似的東西。不同的控制器和其他簡單結構從這個單例中訪問所需的數據。
這裏是例如一個非常簡單的操場代碼:傳遞從UI層(UIL)的封閉
class DataManager
{
static let sharedInstance = DataManager()
var _value: Int = 0
var value: Int
{
get
{
return _value
}
set
{
_value = newValue
}
}
}
class DemoController1
{
let dm = DataManager.sharedInstance
func incValue()
{
dm.value += 1
}
}
class DemoController2
{
let dm = DataManager.sharedInstance
func mulValue()
{
dm.value *= 2
}
}
let dm = DataManager.sharedInstance
let dc1 = DemoController1()
let dc2 = DemoController2()
print ("value: \(dm.value)")
dc1.incValue()
print ("value: \(dm.value)")
dc1.incValue()
print ("value: \(dm.value)")
dc2.mulValue()
print ("value: \(dm.value)")
相關問題
- 1. 在活動和片段之間進行通信的最佳方式
- 2. 2 .Net應用程序之間進行通信的最佳方式?
- 3. C++和c之間進行通信的最快方法#
- 4. iPhone/Objective C - ViewController之間的通信/實現的最佳方式?
- 5. 通過以太網進行Android Arduino通信的「最佳」方式
- 6. mmap是進程間通信的最佳方式嗎?
- 7. Swing GUI與域邏輯進行通信的最佳方式?
- 8. 什麼是與Firefox插件進行通信的最佳方式
- 9. Flex與C#後端進行通信的最佳方式?
- 10. 什麼是WCF服務和獨立線程之間進行通信的最佳方式?
- 11. Powershell腳本和Windows服務之間進行通信的最佳方式是什麼?
- 12. 在SWT中,父shell和非對話子shell之間進行通信的最佳方式是什麼?
- 13. Android應用程序和JavaFX應用程序之間進行通信的最佳方式
- 14. 在UIDatePicker和UITableView之間進行通信
- 15. 在C++和C#之間進行通信?
- 16. 在JavaScript和Servlet之間進行通信
- 17. 用C#在兩個進程之間進行通信的最佳方式是什麼?
- 18. 在同一臺計算機上運行的Python軟件之間進行通信的最佳方式是什麼?
- 19. 在同一臺計算機上運行的Java應用程序之間進行通信的最佳方式
- 20. 大型項目中進程間通信的最佳和最簡單的方法
- 21. 與mac通信iphone的最佳方式?
- 22. 如何在代碼隱藏文件和ViewModel之間進行通信
- 23. 通過WiFi與硬件設備進行短消息通信的最佳方式
- 24. 如何確定在Angular 2中組件之間進行通信的最佳方式?
- 25. 在spreaded services/unix機器之間進行通信的最佳pythonic方式是什麼?
- 26. Amazon EC2實例之間進行通信的最佳做法是什麼?
- 27. Extjs幾個ViewControllers和Views之間通信的最佳實踐
- 28. 使用json格式在android和servlet之間進行通信
- 29. 什麼是逆轉視圖控制器之間通信的最佳方式?
- 30. 兩臺服務器之間通信的最佳方式是什麼?
溝通在這種情況下意味着變量交換? –
是的。我在ViewModel類中準備DataArray,它將被髮送到控制器來提供我的TableView。 – MarkMe