84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
安卓的MVP模式是什麼?與普通的寫入事件處理函數有什麼不同?
MVP是不是多了個presenter類別來持有安卓的view對象,處理資料與刷新view?
與普通的寫事件處理函數差別不是就是把在事件處理函數裡的程式碼,挪到了presenter類別裡面?
但是如果只是這種差別的話,好像也沒什麼特別的,我們寫程式不都是這麼抽象的嗎?把業務邏輯抽象化在一起,為什麼要單獨拎出MVP這個概念?
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
個人看來優點有以下幾個:1、邏輯清晰,介面的歸View,資料處理的歸Presenter,不至於出現Activity和Fragment大爆炸,讀起程式碼來十分要命,後續的維護和升級也會帶來很大的方便。我在看別人寫的程式碼的時候,最怕分層不清楚,十分吃力。 2、測試方便,Presenter可以單獨抽出來測試,不用和View綁定在一起測試,出錯了也好排查。
你這麼說是沒錯啦,專門用presenter來處理view。 我認為的好處:1.presenter正常接收的是一個view的接口,這個應用DIP(依賴倒置原則),就是讓我們盡量依賴抽象,這樣任意一個view,只要實現了這些接口,那麼他們都可以共用這些處理邏輯。 2.應用了SRP(單一職責原則),可以讓資料處理邏輯層與view分離,解耦
其實只是我們在開發中的隨意性有點高,按照OCP原則,對擴展開發,對修改封閉,一個Activity可能會有v1 v2 v3版本,那麼這時候你去修改代碼的時候,可能就是把以前的程式碼推到重來,或在以前的程式碼基礎上修改,這是比較危險的行為,而且也是一個沒效率的行為,用了MVP,那麼當你出現了v2、v3版本的時候,可能增加了幾個控件,或減少了幾個控件,此時你如果是直接去修改之前的程式碼,那麼mvp框架確實沒有鳥用,但是你以擴展的方式來進行開發,就不一樣了,多了幾個控件,那麼寫個新interface繼承原來view的interface,然後再來一個新的presenter繼承舊的,在這裡面進行新邏輯的編寫,維護上面和方便,測試也只需要測試新的程式碼就行了,程式的穩定性可以增強。 所以如果遵照mvp模式來寫,不知不覺中的你程式碼的可維護性就變強了。
個人看來優點有以下幾個:
1、邏輯清晰,介面的歸View,資料處理的歸Presenter,不至於出現Activity和Fragment大爆炸,讀起程式碼來十分要命,後續的維護和升級也會帶來很大的方便。我在看別人寫的程式碼的時候,最怕分層不清楚,十分吃力。
2、測試方便,Presenter可以單獨抽出來測試,不用和View綁定在一起測試,出錯了也好排查。
你這麼說是沒錯啦,專門用presenter來處理view。
我認為的好處:
1.presenter正常接收的是一個view的接口,這個應用DIP(依賴倒置原則),就是讓我們盡量依賴抽象,這樣任意一個view,只要實現了這些接口,那麼他們都可以共用這些處理邏輯。
2.應用了SRP(單一職責原則),可以讓資料處理邏輯層與view分離,解耦
其實只是我們在開發中的隨意性有點高,按照OCP原則,對擴展開發,對修改封閉,一個Activity可能會有v1 v2 v3版本,那麼這時候你去修改代碼的時候,可能就是把以前的程式碼推到重來,或在以前的程式碼基礎上修改,這是比較危險的行為,而且也是一個沒效率的行為,用了MVP,那麼當你出現了v2、v3版本的時候,可能增加了幾個控件,或減少了幾個控件,此時你如果是直接去修改之前的程式碼,那麼mvp框架確實沒有鳥用,但是你以擴展的方式來進行開發,就不一樣了,多了幾個控件,那麼寫個新interface繼承原來view的interface,然後再來一個新的presenter繼承舊的,在這裡面進行新邏輯的編寫,維護上面和方便,測試也只需要測試新的程式碼就行了,程式的穩定性可以增強。
所以如果遵照mvp模式來寫,不知不覺中的你程式碼的可維護性就變強了。