搜尋

首頁  >  問答  >  主體

android - 安卓的MVP模式是?與普通的寫入事件處理函數有什麼不同?

安卓的MVP模式是什麼?與普通的寫入事件處理函數有什麼不同?

MVP是不是多了個presenter類別來持有安卓的view對象,處理資料與刷新view?

與普通的寫事件處理函數差別不是就是把在事件處理函數裡的程式碼,挪到了presenter類別裡面?

但是如果只是這種差別的話,好像也沒什麼特別的,我們寫程式不都是這麼抽象的嗎?把業務邏輯抽象化在一起,為什麼要單獨拎出MVP這個概念?

高洛峰高洛峰2747 天前1050

全部回覆(2)我來回復

  • typecho

    typecho2017-06-17 09:18:12

    個人看來優點有以下幾個:
    1、邏輯清晰,介面的歸View,資料處理的歸Presenter,不至於出現Activity和Fragment大爆炸,讀起程式碼來十分要命,後續的維護和升級也會帶來很大的方便。我在看別人寫的程式碼的時候,最怕分層不清楚,十分吃力。
    2、測試方便,Presenter可以單獨抽出來測試,不用和View綁定在一起測試,出錯了也好排查。

    回覆
    0
  • 给我你的怀抱

    给我你的怀抱2017-06-17 09:18:12

    你這麼說是沒錯啦,專門用presenter來處理view。
    我認為的好處:
    1.presenter正常接收的是一個view的接口,這個應用DIP(依賴倒置原則),就是讓我們盡量依賴抽象,這樣任意一個view,只要實現了這些接口,那麼他們都可以共用這些處理邏輯。
    2.應用了SRP(單一職責原則),可以讓資料處理邏輯層與view分離,解耦

    其實只是我們在開發中的隨意性有點高,按照OCP原則,對擴展開發,對修改封閉,一個Activity可能會有v1 v2 v3版本,那麼這時候你去修改代碼的時候,可能就是把以前的程式碼推到重來,或在以前的程式碼基礎上修改,這是比較危險的行為,而且也是一個沒效率的行為,用了MVP,那麼當你出現了v2、v3版本的時候,可能增加了幾個控件,或減少了幾個控件,此時你如果是直接去修改之前的程式碼,那麼mvp框架確實沒有鳥用,但是你以擴展的方式來進行開發,就不一樣了,多了幾個控件,那麼寫個新interface繼承原來view的interface,然後再來一個新的presenter繼承舊的,在這裡面進行新邏輯的編寫,維護上面和方便,測試也只需要測試新的程式碼就行了,程式的穩定性可以增強。
    所以如果遵照mvp模式來寫,不知不覺中的你程式碼的可維護性就變強了。

    回覆
    0
  • 取消回覆