2017年5月12日 星期五

Android MVP Pattern (Model View Presenter)

MVP (Model View Presenter)是由MVC (Model View Controller)演變而來。
在MVC的架構,通常會把layout(xml)當成View,Activity當成Controller,
事實上,Activity 卻是Controller 與View 的混合,於是Activity既要做處理View,也負責商業邏輯。使得Activity越來越肥。

MVC ->  MVP 的最大差異在於 Activity的商業邏輯移到Presenter,Activity 專心於View

MVP:
Model - 提供資料、儲存資料 例:SharedPreferences、呼叫API
View - 負責展示UI,如 Activity、Fragment
Presenter - 負責邏輯處理

來看看這個範例,輸入帳號密碼後,按下「LOGIN」顯示登入成功或失敗。


新增LoginActivty 為MVP 中的View
新增LoginContract ,裡面放了ILoginView、ILoginPresenter 2個Interface
新增LoginPresenter,負責商業邏輯,與Model互動。
建立 User Model,負責檢查帳號是否正確。(範例單純hard code判斷,一般在此與API 登入)



LoginActivity ( View )


LoginPresenter (Presenter)
User (Model)




完整程式
https://github.com/evanchen76/MVP-Pattern

2 則留言:

  1. 簡單易懂,太感謝了!

    回覆刪除
  2. MARTYLISS PRO Nano Titanium HAND - iTanium-Arts.com
    MARTYLISS PRO Nano Titanium HAND is the premium titanium HAND made from a genuine titanium core titanium trim as seen on tv developed for a high performance use. titanium pots and pans Made with titanium engine block an alloy $37.99 · can titanium rings be resized ‎In titanium strength stock

    回覆刪除