国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android之MVP模式實現登錄和網絡數據加載

2019-11-09 17:36:19
字體:
來源:轉載
供稿:網友

MVP簡介

相信大家對 MVC 都是比較熟悉了:M-Model-模型、V-View-視圖、C-Controller-控制器,MVP作為MVC的演化版本,也是作為用戶界面(用戶層)的實現模式,那么類似的MVP所對應的意義:M-Model-模型、V-View-視圖、P-PResenter-表示器。

MVC詳見博客: Android之MVC模式的使用

Model

Model 是用戶界面需要顯示數據的抽象,也可以理解為從業務數據(結果)那里到用戶界面的抽象。

View

視圖這一層體現的很輕薄,負責顯示數據、提供友好界面跟用戶交互就行。MVP下Activity和Fragment體現在了這一層,Activity一般也就做加載UI視圖、設置監聽再交由Presenter處理的一些工作,所以也就需要持有相應Presenter的引用。

Presenter

Presenter這一層處理著程序各種邏輯的分發,收到View層UI上的反饋命令、定時命令、系統命令等指令后分發處理邏輯交由業務層做具體的業務操作,然后將得到的 Model 給 View 顯示。

MVCMVP的區別

在 MVC 中:

View 可以與 Model 直接交互;Controller 可以被多個 View 共享;Controller 可以決定顯示哪個 View 。

在 MVP 中:

View 不直接與 Model 交互;Presenter 與 View 通過接口來交互,更有利于添加單元測試;通常 View 與 Presenter 是一對一的,但復雜的 View 可能綁定多個 Presenter 來處理;Presenter 也可以直接進行 View 上的渲染。

模仿登錄案例:(demo中包含登錄和網絡數據請求)

model

public class ModelSignIn implements ILoginSignIn { @Override public void onSignIn(String name, String pwd, IOnSetListenter listenter) { if (name.isEmpty()) { if (listenter!=null) { listenter.onError("輸入用戶名為空"); return; } } if (pwd.isEmpty()) { if (listenter!=null) { listenter.onError("輸入密碼為空"); return; } } if(name.equals("dickyqie") && pwd.equals("123456")) { if (listenter!=null) { listenter.onError("登錄成功"); return; } }else{ if (listenter!=null) { listenter.onError("登錄失敗"); return; } } }}

presenter

<uses-permission android:name="android.permission.INTERNET"/>

由于代碼太多,完整代碼未給出,源碼直接下載即可

源碼點擊下載


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 万载县| 含山县| 忻城县| 柘荣县| 浮山县| 屏东市| 团风县| 保德县| 太保市| 德江县| 台州市| 陆河县| 策勒县| 沛县| 咸宁市| 北京市| 伊吾县| 四平市| 桃江县| 望奎县| 上栗县| 梅州市| 潮安县| 抚远县| 嵩明县| 邯郸县| 唐山市| 和政县| 神农架林区| 万盛区| 永登县| 仁化县| 阿尔山市| 峡江县| 札达县| 台北市| 湄潭县| 大连市| 泰安市| 北宁市| 棋牌|