我一直在做大量研究并嘗試在我的應用程序中使用 MVP 和 Clean Architecture,但我仍然有很多困惑并且不完全理解它。我最大的疑問是:非數據庫相關的,比如復雜的ma數學計算,邏輯應該去哪里?我在互聯網上找到的每個示例應用程序都必須簡單地從數據庫中保存和檢索一些數據。例如,我有一個屏幕,用戶需要在其中插入 4 個值,然后我有采用這些值的代碼,執行一些計算并返回表示要顯示的數據的對象。我現在的問題是:在具有以下結構的具有干凈架構項目的 MVP 中,我應該將負責生成結果的類或代碼放在什么位置:view <--> presenter <--> use cases <--> repositories視圖將輸入發送給演示者,但是隨后呢?還有許多示例使用不同的“服務”類,在其中一些示例中,它們連接到演示者,在其他示例中連接到存儲庫。
2 回答

慕蓋茨4494581
TA貢獻1850條經驗 獲得超11個贊
用例是模型的一部分。在模型中有數據(用于定義數據如何存儲在內存中的 pojo)和用例。作為這種復雜的數學計算的所有業務邏輯都必須在一個或多個用例中。
視圖將獲取數據并將其傳遞給演示者,演示者應該創建一個線程(以異步運行代碼的多種方式之一,我喜歡為此使用線程池執行器)來運行將進行數學計算并回答演示者的用例. 最后,Presenter 會將數據發送回視圖。
除非您必須檢索任何數據(來自傳感器、文件、數據庫、url 響應...)或永久存儲它,否則我認為在這種情況下您不需要存儲庫。

DIEA
TA貢獻1820條經驗 獲得超2個贊
您應該在 Presenter 本身中編寫復雜且合乎邏輯的代碼,為什么?-> 如果您需要任何數據庫值,那么您可以通過運行線程從 Presenter 獲取它并進行進一步計算。
如果有任何驗證,您應該使用通用類來獲取結果
例如。
view 需要一些輸入結果,您可以將其傳遞給 presenter ,presenter 將處理輸入并將數據返回給 view。
添加回答
舉報
0/150
提交
取消