最近因為換工作的原因沒有寫博客,現在慢慢穩定了,我準備寫一些關於Android 進階的文章,也是為了督促自己學習,大家一起進步! 今天詳細的分析一下Android APP架構之一:MVC ### MVC簡介 >[MVC](https://baike.baidu.com/item/MVC)全名是Mod ...
最近因為換工作的原因沒有寫博客,現在慢慢穩定了,我準備寫一些關於Android 進階的文章,也是為了督促自己學習,大家一起進步! 今天詳細的分析一下Android APP架構之一:MVC ### MVC簡介 >[MVC](https://baike.baidu.com/item/MVC)全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟體設計典範,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯聚集到一個部件裡面,在改進和個性化定製界面及用戶交互的同時,不需要重新編寫業務邏輯。MVC被獨特的發展起來用於映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結構中。 大家有對MVC不瞭解的直接去百度百科,這裡就不做過多的講解了。 ### Android中的MVC - M層:適合做一些業務邏輯處理,比如資料庫存取操作,網路操作,複雜的演算法,耗時的任務等都在model層處理。 - V層:應用層中處理數據顯示的部分,XML佈局可以視為V層(雖然很牽強) - C層:在Android中,Activity處理用戶交互問題,因此可以認為Activity是控制器,Activity讀取V視圖層的數據 MVC每層都有瞭解後,再對它構建一個導向圖 ![](https://img2018.cnblogs.com/blog/1312938/201908/1312938-20190831163125098-1442172398.png) ###### 我們為什麼要用MVC? 我們在寫項目的時候activity太臃腫,需要把View與Model進行分離,這樣的好處: 1.耦合性低,利用MVC框架使得View(視圖)層和Model(模型)層可以很好的分離 2.方便維護 3.不用重覆的寫相同的業務邏輯,實現Model與Model之間的調用,Controller也可以直接調用Model 來實現代碼復用 ### 從實例中強化瞭解MVC 以之前做過的一個需求舉例吧,“獲取我的評論列表” 目的就是獲取評論的數據,並顯示出來 ##### 步驟: ###### (1) XML視圖佈局我這裡就不再寫了,無非就是按鈕、列表控制項以及需要更新的item佈局控制項 ###### (2) 為了實現View模塊與Model的交互 (也就是Model執行完業務邏輯之後,需要通知給View去展示數據) 我們需要定義一個**MyCommentListener** ``` public interface MyCommentListener { /** * 載入我的評論列表成功的回調 */ void onMyCommentSuccess(MyCommentBean s); /** * 載入我的評論列表失敗的回調 */ void onMyCommentFailure(); } ``` ###### (3) Controller與Model交互,也就是C層告訴M層獲取評論的請求, 它們之間的聯繫通過MyCommentModel ``` public interface MyCommentModel { /** * 獲取我的評論列表信息 */ void getMyCommentInfo(List