簡體   English   中英

Android MVP-活動應該是視圖還是演示者?

[英]Android MVP - should an Activity be a View or Presenter?

我想用MVP模式實現下一個應用程序,因此我開始閱讀一些有關應如何實現的文章。 對我來說,主要問題是這種模式有不同的方法。 有人說我們應該將活動視為一種觀點,但另一些人則認為活動應該是演示者。

這里將活動作為視圖進行了描述: MVP Android ,這很有意義。 但是從另一方面來說,我發現這個答案時有一些支持https://stackoverflow.com/a/7609943 ,有人說活動應該是演講者。

有沒有人有這種模式的經驗?

片刻之后,我認為應該將“活動”視為“視圖”。 如果我們將業務邏輯與活動分開,則很容易用片段或視圖替換活動。 我們甚至可以采用我們的模型和演示者,並在桌面應用程序中使用它們,只需向它們添加新的視圖即可。 為了測試目的,最好將演示者創建為普通對象,而不是活動。

活動非常接近您的布局,因此應該是一個視圖。 並且您的業務邏輯應該在您的Activity創建的Presenter中。 要了解有關MVP的更多信息,請查看- 適用於Android的MVP

在此處輸入圖片說明

我認為將Activity視為演示者是安全的。 視圖可以視為布局XML文件。 如您在上面發布的答案中所述,演示者是與模型以及視圖直接相關的事物。 在活動中,您可以連接到視圖,並保持在視圖和模型之間的中間狀態,這實際上是Presenter的功能。 它從視圖獲取輸入事件,並設置從模型接收的值以顯示在視圖中。

看看G +社區Android MVP ,尤其是示例https://github.com/spengilley/ActivityFragmentMVP

這是一個Passive View模式實現,最適合在測試中使用。

活動應該是視圖,因為它是渲染圖形的地方。 演示者和模型可以用純Java編寫並易於測試。

查看此AndroidMvc / Mvp框架

https://github.com/kejunxia/AndroidMvc

也可以在這里查看MVP示例https://github.com/kejunxia/AndroidMvc/tree/master/samples/simple-mvp

術語“視圖”在此處已超載,android視圖與MVP模式中應使用的視圖不同。 視圖是應該由“活動/片段”實現的接口。 您可以查看Android官方MVP示例

我建議從基本開始。 這是頁面的流程。

在此處輸入圖片說明

在確定是否應將活動視為視圖或演示者組件時,我們必須遵循“單一責任原則”。

將業務邏輯與活動分離幾乎是不可能的。 造成這種情況的一個主要原因是

活動擴展了上下文。

從功能上講,上下文對象提供對第三方應用程序可以使用的大多數平台功能的訪問。

由於Activity是Context的子類,因此我們的應用程序使用其API來控制平台功能和資源的子集。 使用這些功能和資源的邏輯就是我們的業務邏輯。 因此,無論我們多么努力,我們都無法將業務邏輯與活動完全分開。

由於我們無法將業務邏輯與活動分開,因此我們將其與所有UI邏輯分開。 這不是一項瑣碎的任務,但是從長遠來看,這是值得的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM