91直播在线观看www免费/日韩高清在线亚洲专区vr/国产精品午夜寂寞视频/亚瑟在线影院怎么下载

忠于品牌,精于技術(shù)

Android用MVP開發(fā)的那些套路

今天我為大家?guī)淼氖荕VP的開發(fā)套路,幫助大家認(rèn)識MVP,喜歡MVP。

MVP是什么?

MVP設(shè)計(jì)模式

view(客戶),presenter(產(chǎn)品狗),model(程序猿)。

有一天,客戶找到了產(chǎn)品狗說:“我要開發(fā)一個像微信一樣的App”

然后,產(chǎn)品狗原封不動地轉(zhuǎn)達(dá)了給程序猿,程序猿默默地說了一句:“傻X,有病”。

當(dāng)然產(chǎn)品狗也不會這么傻,它當(dāng)然要在客戶面前夸他,于是在電話里頭說:“我們的工作人員,對此表示有挑戰(zhàn)性,但是他們很樂意。”

于是新需求就來了,最終苦逼的還是程序猿。

終于,程序猿受不了了,辭職了,但是又來了一批新的,需求還是需求,并不會因?yàn)槿瞬煌耍屯频暨@單生意(重構(gòu)項(xiàng)目)。

view(客戶),contorler(產(chǎn)品狗),model(程序猿)

有一天,客戶找到了產(chǎn)品狗和程序猿說:“我要開發(fā)一個像微信一樣的App”

程序猿默默地說了一句:“傻X,有病”。

嗯,打起來了,項(xiàng)目沒了。

通過這么深刻的故事,我們看到了MVP的優(yōu)點(diǎn)

1、view和model相互不認(rèn)識(解耦),并不會因?yàn)閙odel不一樣了,而影響了view,反過來也一樣。那么model什么時候會變呢?例如,老子原來用的是Volley網(wǎng)絡(luò)框架,但是我現(xiàn)在要換成OKhttp。沒關(guān)系,我只需改動model即可。

2、model是面向接口文檔編程的,view是面向設(shè)計(jì)圖編程的,而presenter是負(fù)責(zé)協(xié)調(diào)的,這樣就可以并行開發(fā)了。

3、測試,因?yàn)槭莢iew和model不認(rèn)識(解耦),那么就可以單獨(dú)地對model進(jìn)行測試,驗(yàn)證它的準(zhǔn)確性。做好了view,真機(jī)調(diào)試,又可以發(fā)朋友圈了。最后用presenter連起來,如果測試得好,Bug也會少很多。

4、做不好不用背鍋,還可以多踩一腳(O(∩_∩)O~)。我做model的,數(shù)據(jù)給你了,你顯示那么丑......這是一個后臺跟App的故事。

5、presenter(產(chǎn)品狗),可以同時面對多個view(客戶),做更多的事情(累死更多的程序猿)。

MVP的缺點(diǎn)

1、presenter負(fù)責(zé)邏輯,代碼會多。(產(chǎn)品狗確實(shí)挺累的)

2、寫得很累,明明view跟model可以直接相連,非要跟presenter聯(lián)系,可能在傳遞時出現(xiàn)Bug。(明明程序猿可以跟客戶面對面溝通,但是經(jīng)過了產(chǎn)品狗,回來的需求就不一樣了)

3、我還要想。(直接下個主題)

MVP開發(fā)攻略套路

model層

model開發(fā)一條龍

這是我開發(fā)的套路,希望你們喜歡。正常情況下,3天就能完成所有的接口文檔對應(yīng)的model。而在做model的時候,面對的是接口文檔,沒有比這個東西更接近需求了,因此,你做完之后會更加明白這個項(xiàng)目。

用Rxjava+Retrofit是什么體驗(yàn)

直接生成Bean對象

view層

view開發(fā)一條龍

簡單但是暴力。我還有隆重地為大家推薦幾款插件。

1、SelectorChapek for Android(自動生成Selector的XML文件),再也不要考慮那些亂七八糟的press,focus,normal

2、jimu Mirror(不需要寫代碼,就能在真機(jī)顯示布局,包括列表),神器!加快了朕發(fā)朋友圈的速度。

3、butterknife(依賴注入庫,自動注解布局中帶@+id的控件),用完就更model的同學(xué)說,真慢!

4、Android studio自帶的Get,Set生成器。

presenter層

Sept1

根據(jù)model的所需參數(shù)創(chuàng)建外部調(diào)用接口(presenter的方法接口)

Sept2

實(shí)現(xiàn)Sept1中的接口和model層提供的回調(diào)接口

Sept3

根據(jù)業(yè)務(wù)邏輯,調(diào)用view層提供的方法。

小結(jié)

由于model和view可以同時進(jìn)行開發(fā),提高了開發(fā)效率,減少了bug。

在外部調(diào)用方法中加上適當(dāng)?shù)淖⑨專梢宰屛腋玫販贤ā?

總結(jié)

我前段時間做了一個ASP.NET mvc5的網(wǎng)站,雖然mvc5很清晰,但是在逐漸開發(fā)的過程中,model和view漸漸勾搭上了,到最后分不開了,我們也沒辦法。導(dǎo)致了項(xiàng)目重構(gòu)的困難,最后的命運(yùn)是重做。

我最近一段時間用MVP做了一個App,由于我對MVP的理解不到位,導(dǎo)致了代碼很大部分的冗余,有一些沒有必要提供外部調(diào)用的方法,我卻硬要追求MVP模式的套路,結(jié)果導(dǎo)致了代碼很亂,跟大家的忠告是,MVP是一個工程,不是一種硬性的規(guī)則,我們靈活一點(diǎn)。

我最近幾天,做了一個看圖的App,我發(fā)現(xiàn)MVP模式上用上封裝和繼承,會讓我們的代碼更加的好看。而且復(fù)用率大大提高。