今天我為大家帶來的是MVP的開發套路,幫助大家認識MVP,喜歡MVP。
MVP是什么?
MVP設計模式
view(客戶),presenter(產品狗),model(程序猿)。
有一天,客戶找到了產品狗說:“我要開發一個像微信一樣的App”
然后,產品狗原封不動地轉達了給程序猿,程序猿默默地說了一句:“傻X,有病”。
當然產品狗也不會這么傻,它當然要在客戶面前夸他,于是在電話里頭說:“我們的工作人員,對此表示有挑戰性,但是他們很樂意?!?
于是新需求就來了,最終苦逼的還是程序猿。
終于,程序猿受不了了,辭職了,但是又來了一批新的,需求還是需求,并不會因為人不同了,就推掉這單生意(重構項目)。
view(客戶),contorler(產品狗),model(程序猿)
有一天,客戶找到了產品狗和程序猿說:“我要開發一個像微信一樣的App”
程序猿默默地說了一句:“傻X,有病”。
嗯,打起來了,項目沒了。
通過這么深刻的故事,我們看到了MVP的優點
1、view和model相互不認識(解耦),并不會因為model不一樣了,而影響了view,反過來也一樣。那么model什么時候會變呢?例如,老子原來用的是Volley網絡框架,但是我現在要換成OKhttp。沒關系,我只需改動model即可。
2、model是面向接口文檔編程的,view是面向設計圖編程的,而presenter是負責協調的,這樣就可以并行開發了。
3、測試,因為是view和model不認識(解耦),那么就可以單獨地對model進行測試,驗證它的準確性。做好了view,真機調試,又可以發朋友圈了。最后用presenter連起來,如果測試得好,Bug也會少很多。
4、做不好不用背鍋,還可以多踩一腳(O(∩_∩)O~)。我做model的,數據給你了,你顯示那么丑......這是一個后臺跟App的故事。
5、presenter(產品狗),可以同時面對多個view(客戶),做更多的事情(累死更多的程序猿)。
MVP的缺點
1、presenter負責邏輯,代碼會多。(產品狗確實挺累的)
2、寫得很累,明明view跟model可以直接相連,非要跟presenter聯系,可能在傳遞時出現Bug。(明明程序猿可以跟客戶面對面溝通,但是經過了產品狗,回來的需求就不一樣了)
3、我還要想。(直接下個主題)
MVP開發攻略套路
model層
model開發一條龍
這是我開發的套路,希望你們喜歡。正常情況下,3天就能完成所有的接口文檔對應的model。而在做model的時候,面對的是接口文檔,沒有比這個東西更接近需求了,因此,你做完之后會更加明白這個項目。
用Rxjava+Retrofit是什么體驗
直接生成Bean對象
view層
view開發一條龍
簡單但是暴力。我還有隆重地為大家推薦幾款插件。
1、SelectorChapek for Android(自動生成Selector的XML文件),再也不要考慮那些亂七八糟的press,focus,normal
2、jimu Mirror(不需要寫代碼,就能在真機顯示布局,包括列表),神器!加快了朕發朋友圈的速度。
3、butterknife(依賴注入庫,自動注解布局中帶@+id的控件),用完就更model的同學說,真慢!
4、Android studio自帶的Get,Set生成器。
presenter層
Sept1
根據model的所需參數創建外部調用接口(presenter的方法接口)
Sept2
實現Sept1中的接口和model層提供的回調接口
Sept3
根據業務邏輯,調用view層提供的方法。
小結
由于model和view可以同時進行開發,提高了開發效率,減少了bug。
在外部調用方法中加上適當的注釋,可以讓我更好地溝通。
總結
我前段時間做了一個ASP.NET mvc5的網站,雖然mvc5很清晰,但是在逐漸開發的過程中,model和view漸漸勾搭上了,到最后分不開了,我們也沒辦法。導致了項目重構的困難,最后的命運是重做。
我最近一段時間用MVP做了一個App,由于我對MVP的理解不到位,導致了代碼很大部分的冗余,有一些沒有必要提供外部調用的方法,我卻硬要追求MVP模式的套路,結果導致了代碼很亂,跟大家的忠告是,MVP是一個工程,不是一種硬性的規則,我們靈活一點。
我最近幾天,做了一個看圖的App,我發現MVP模式上用上封裝和繼承,會讓我們的代碼更加的好看。而且復用率大大提高。
云恒網絡www.xyzqw.net版權所有 備案號:魯ICP備19021997號-1 淄博高端網站建設、網絡營銷知名品牌 網絡整合傳播機構