Android MVP極限封裝 一

2021-08-27 03:40:47 字數 2991 閱讀 6320

mvp架構在android這一塊已經盛行依舊,對於一些學習能力比較強的人來說,已經能夠運用自如甚至改造優化了,對於吾等菜鳥,卻是如此的陌生,今日這篇部落格,算是小弟在學習和應用上的一點總結罷了,如有不足,還請各位大神不吝指教。

mvp架構是什麼就不多說了,博主主要很大家分享的是,如何設計mvp架構。

先來分析一下mvp如何使用:m-v-p三層之間,p作為中間層,負責m,v之間的資料互動的中介,將資料從m層獲取,處理之後提交到v層,換句話說,v需要持有p的例項,p層需要持有v的例項。原理很簡單,使用泛型對資料進行封裝處理:

1.定義乙個v層的空介面,主要是方便封裝:

/**

* v層介面

*/public

inte***ce

iview

2.定義乙個p層的介面:

/**

* 抽象為介面

* */

public inte***ce ipresenterextends

iview>

3.封裝p基類:繫結解綁v例項

/**

* 抽象類 統一管理view層繫結和解除繫結

* *

@param

*/public class

basepresenter

<

vextends

iview, m

extends

imodel

>

implements

ipresenter

<

v>

/*** 用於檢查view是否為空物件**

@return

*/ public boolean isattachview()

@override

public void attachview(v view)

@override

public void dettachview()

}}

4.m層封裝:

/**

* m層

*/public

inte***ce

imodel

/** * 登入model

* created by admin on 2018/2/5.

*/public

inte***ce

iloginmodel

extends

imodel

/** * 登入

* created by admin on 2018/2/5.

*/public

class

loginmodel

implements

iloginmodel

}

之後,將資料提交到activity或者fragment就行了。

最基本的鋪墊已經做好了,接下來就該封裝view了:

/**

* created by admin on 2018/2/5.

*/public

abstract

class

mvpactivity

<

vextends

iview, p

extends

basepresenter

<

v>>

extends

implements

iview

protected

p getpresenter()

protected

void

setpresenter(p presenter)

protected

v getview()

...@override

protected

void

ondestroy()

}

收工,mvp基礎框架搭建完成了。沒錯,就是基礎框架,但是能不能用呢,讓我們拭目以待吧。

先來寫乙個view:

public

inte***ce

iloginview

extends

iview

然後是presneter:

/**

* created by admin on 2018/2/5.

*/public class

loginpresenter

extends

basepresenter

<

ilogin

, loginmodel

>

public void login()

}@override

public void onfailure()

}});

}}

最後來完成activity的邏輯:

public

class

loginactivity

extends

mvpactivity

<

iloginview

, loginpresenter

>

implements

iloginview

public

void

login(view view)

@override

public

void

onloginsuccess()

@override

public

void

onfailed()

部落格只簡單的介紹了如何去封裝mvp架構,但是還存在著不完美之處,mvp架構優化目前發現了乙個問題,如果各位還有什麼發現,記得聯絡我哦,一起努力完善。

對於Android MVP的一些思考(二)

上次對mvp的表面概念作出了一些思考 對於mvp 響應式程式設計以及事件匯流排的一些思考 而隨著對自己的mvp框架深入優化 擴充套件,也發現了一些疑惑的地方。相信接觸過mvp框架的都清楚,針對model view presenter這三者,都會為其單獨建立乙個inte ce,規範其各自的行為。舉個例...

極限程式設計筆記(一)

什麼是xp?xp是一種社會性的變革 xp的價值 是溝通,簡單,反饋,勇氣和尊重。xp是一種軟體開發的風格,專注於程式設計技術,清晰溝通還有團隊協作的精彩實踐。xp是一條可以使得一起開發軟體的人們共同進步直至卓越的途徑 xp是一種方 它建立在解決軟體開發的約束的基礎之上 xp適合模糊或者快速變化的需求...

封裝變化(一)

軟體設計最大的敵人,就是應付需求不斷的變化。變化有時候是無窮盡的,於是專案開發就在反覆的修改 更新中無限期地延遲交付的日期。變化如懸在頭頂的達摩克斯之劍,令許多軟體工程專家一籌莫展。正如無法找到解決軟體開發的 銀彈 要徹底將變化扼殺在搖籃之中,看來也是不可能完成的任務。那麼,積極地面對 變化 方才是...