Android上的MVC模式

是否能夠在Android版Java中實現模型-視圖-控制器模式? html

仍是已經經過活動實施了? 仍是有更好的方法來爲Android實現MVC模式? android


#1樓

我認爲最有用的簡化說明在這裏: http : //www.cs.otago.ac.nz/cosc346/labs/COSC346-lab2.2up.pdf git

從我在這裏看到和閱讀的全部其餘內容來看,實現全部這些東西會使它變得更加困難,而且與android的其餘部分不太匹配。 github

經過活動實現其餘偵聽器已是Android的標準方法。 最無害的方法是像幻燈片中描述的那樣添加Java Observer,並將onClick和其餘類型的操做分組爲仍在Activity中的功能。 框架

Android的方式是Activity能夠同時執行。 對抗它並無真正使擴展或未來編寫代碼變得更加容易。 佈局

我贊成第二個職位 。 它已經實現了,而不是人們習慣的方式。 不管是否在同一文件中,都已經存在分隔。 無需建立額外的分隔符以使其適合其餘語言和操做系統。 單元測試


#2樓

通過一番搜索,最合理的答案以下: 測試

MVC已在Android中實現爲: ui

  1. View =佈局,資源和諸如android.view.View派生的Button類的內置類。
  2. 控制器=活動
  3. 模型=實現應用程序邏輯的類

(順便說一下,這意味着活動中沒有應用程序域邏輯。) google

對於小型開發人員而言,最合理的作法是遵循這種模式,而不是嘗試作Google決定不作的事情。

PS注意,Activity有時會從新啓動,所以它沒有放置模型數據的位置(致使從新啓動的最簡單方法是從XML中省略android:configChanges="keyboardHidden|orientation"並打開設備)。

編輯

咱們可能在談論MVC ,可是能夠說FMVCFramework--Model--View--Controller 。 該框架 (Android OS)強加了其組件生命週期和相關事件的概念,而且在實踐中, 控制器Activity / Service / BroadcastReceiver )首先負責處理這些框架施加的事件(例如onCreate() ) 。 用戶輸入是否應該單獨處理? 即便須要,也沒法將其分開,用戶輸入事件也來自Android。

不管如何,將更少的非Android專用代碼放入您的Activity / Service / BroadcastReceiver ,效果會更好。


#3樓

儘管這篇文章彷佛很陳舊,但我想添加如下兩個內容,以瞭解該領域針對Android的最新發展:

android- binding-提供一個使android view小部件綁定到數據模型的框架。 它有助於在android應用程序中實現MVC或MVVM模式。

roboguice -RoboGuice消除了開發中的猜想。 注入您的視圖,資源,系統服務或任何其餘對象,而後讓RoboGuice處理細節。


#4樓

我已經看到不少人說MVC已經在Android中實現,可是事實並不是如此。 Android默認不遵循MVC。

由於我不是Google會強加諸如iPhone之類的MVC實現的限制,可是它取決於開發人員在項目中想要的模式或技術,所以在小型或簡單應用程序中不須要使用MVC,但做爲應用程序後來變得愈來愈複雜,須要對其代碼進行修改,所以須要Android中的MVC模式。

它提供了修改代碼的簡便方法,還有助於減小問題。 若是您想在Android上實現MVC,請按照如下給定的連接進行操做,並在您的項目中享受MVC的實現。

http://www.therealjoshua.com/2011/11/android-architecture-part-1-intro/

可是現在,我認爲MVP與Android Architectural Pattern一塊兒是開發人員應該爲乾淨且強大的android應用程序使用的最佳選擇之一。


#5樓

當咱們將MVC, MVVMPresentation Model應用於Android應用程序時,咱們真正想要的是擁有一個清晰的結構化項目,更重要的是,它更易於進行單元測試。

目前,在沒有第三方框架的狀況下,一般會有不少代碼(例如addXXListener(),findViewById()等)不會增長任何業務價值。

並且,您必須運行Android單元測試,而不是普通的JUnit測試,這須要花一些時間才能運行,並使單元測試有些不切實際。 基於這些緣由,幾年前,咱們啓動了一個開源項目RoboBinding-一個用於Android平臺的數據綁定Presentation Model框架。

RoboBinding幫助您編寫易於閱讀,測試和維護的UI代碼。 RoboBinding消除了對諸如addXXListener之類的沒必要要代碼的需求,並將UI邏輯轉移到Presentation Model,這是一個POJO,能夠經過常規JUnit測試進行測試 。 RoboBinding自己隨附300多個JUnit測試以確保其質量。

相關文章
相關標籤/搜索