日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android框架式编程之MVP架构

發(fā)布時(shí)間:2023/12/10 Android 64 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android框架式编程之MVP架构 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

MVP是Google官方發(fā)布的Android開發(fā)相關(guān)的架構(gòu)知識(shí)。本文要講解的是一種最基本的MVP的實(shí)現(xiàn)方式,它使用手動(dòng)的依賴注入來提供具有本地和遠(yuǎn)程數(shù)據(jù)源的存儲(chǔ)庫。異步任務(wù)處理回調(diào)。

基本的MVP示例項(xiàng)目地址:https://github.com/googlesamples/android-architecture/tree/todo-mvp/。

下圖是基本的MVP的邏輯圖:

注意:在MVP的模式中,View是被重新定義的。

  • android.view.View類被指為Android View。
  • 在MVP中,接受presenter命令的View將被簡稱為View。

MVP(Model-View-Presenter)模式,將APP的結(jié)構(gòu)分為三層:View -?Presenter - Model。

View

1. 提供UI交互

2. 在presenter的控制下修改UI。

3. 將業(yè)務(wù)事件交由presenter處理。

注意:View層不存儲(chǔ)數(shù)據(jù),不與Model層交互。

Presenter

1. 對(duì)UI的各種業(yè)務(wù)事件進(jìn)行相應(yīng)處理。也許是與Model層交互,也許自己進(jìn)行一些計(jì)算,也許控制后臺(tái)Task,Servic

2. 對(duì)各種訂閱事件進(jìn)行響應(yīng),修改UI。

3. 臨時(shí)存儲(chǔ)頁面相關(guān)數(shù)據(jù)。

注意 : Presenter內(nèi)不出現(xiàn)View引用。

Model

1. 從網(wǎng)絡(luò),數(shù)據(jù)庫,文件,傳感器,第三方等數(shù)據(jù)源讀寫數(shù)據(jù)。

2. 對(duì)外部的數(shù)據(jù)類型進(jìn)行解析轉(zhuǎn)換為APP內(nèi)部數(shù)據(jù)交由上層處理。

3. 對(duì)數(shù)據(jù)的臨時(shí)存儲(chǔ),管理,協(xié)調(diào)上層數(shù)據(jù)請(qǐng)求。

下圖是MVP各層的結(jié)構(gòu)示意圖:

MVP架構(gòu)能夠?qū)?fù)雜的功能分割為各層內(nèi)的小問題。各層內(nèi)功能單一。這樣易于功能修改拓展與Debug。解耦的設(shè)計(jì),獨(dú)立的模塊,更有利于分工開發(fā)與測(cè)試。?

在示例Demo中,我們可以看到使用到了Fragments,這里使用Fragment有兩個(gè)原因:

Fragment和 activity的分離符合實(shí)現(xiàn)MVP的思路。Activity是整體的控制器,能夠創(chuàng)建和連接view和presenter。

平板形式的布局方式也能夠很好的使用到Fragment。

關(guān)鍵概念

在這個(gè)sample app里面,有四個(gè)功能:

  • Task
  • TaskDetail
  • AddEditTask
  • Statistics?

每一個(gè)功能都有:

  • 定義了View和Presenter的聯(lián)系
  • 一個(gè)Activity,負(fù)責(zé)創(chuàng)建Fragment和Presenter。
  • 一個(gè)Fragment來實(shí)現(xiàn)View的接口
  • 一個(gè)Presenter實(shí)現(xiàn)了Presenter的接口

一般來說,業(yè)務(wù)邏輯應(yīng)該在Presenter里面存在,依賴View來完成Android的UI操作。而View不應(yīng)該有任何的業(yè)務(wù)邏輯存在,它只負(fù)責(zé)將Presenter的命令轉(zhuǎn)換成UI操作,并將用戶的行為傳遞給Presenter。Contract是定義View和Presenter之間聯(lián)系的一系列接口。

Dependencies(依賴)

  • Common Android support libraries (com.android.support.*)
  • Android Testing Support Library (Espresso, AndroidJUnitRunner…)
  • Mockito
  • Google Guava (非空檢查庫)

Features(特性)

MVP 復(fù)雜性的理解:

  • 架構(gòu)的框架/庫/工具的使用復(fù)雜性:None — 不復(fù)雜
  • 概念的復(fù)雜性:低,這個(gè)是一個(gè)Android純MVP
  • 可測(cè)試性: 單元測(cè)試 -- 高, Presenter 和 數(shù)據(jù)源都可以進(jìn)行單元測(cè)試; UI測(cè)試 -- 高,允許使用假數(shù)據(jù)進(jìn)行注入測(cè)試。
  • 代碼度量:相比較傳統(tǒng)的項(xiàng)目,MVP架構(gòu)會(huì)定義更多的類和接口。所以MVP的代碼行數(shù)和類的數(shù)量都會(huì)比較高。
  • 可維護(hù)性:高 -- 易于修改和添加一個(gè)功能
  • 學(xué)習(xí)成本:低 -- 功能易于發(fā)現(xiàn),責(zé)任明確。開發(fā)人員不需要熟悉任何依賴于項(xiàng)目外部的的project。

?

轉(zhuǎn)載于:https://www.cnblogs.com/renhui/p/6277398.html

總結(jié)

以上是生活随笔為你收集整理的Android框架式编程之MVP架构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。