1突诬、MVC
1.3優(yōu)點
(1) 耦合性降低,MVC本質是分層耦合芜繁,減少代碼之間的相互影響旺隙。
(2) 可擴展性好,由于耦合性低骏令,在增加需求時蔬捷,改動小,bug出現的機率小榔袋。
(3) 有利于代碼的維護周拐,MVC三層分工明確,模塊職能劃分明確摘昌。
1.4缺點
隨著項目的增大速妖,Activity/Fragment的代碼會變得臃腫高蜂。
1.5適用場景
適合功能較少聪黎,業(yè)務邏輯簡單,界面不復雜的小型項目
2备恤、MVP
2.3優(yōu)點
(1) Model與View完全分離稿饰,修改互不影響
因為所有的邏輯交互都發(fā)生在一個地方Presenter內部,減少了Model與View層之間的耦合度露泊。
(2) Model層可以封裝復用喉镰,可以極大的減少代碼量。
(3) 一個Preseter可用于多個View惭笑,而不需要改變Presenter的邏輯(因為View的變化總是比Model的變化頻繁)侣姆。
(4) 便于測試生真。把邏輯放在Presenter中,就可以脫離用戶接口來測試邏輯(單元測試)
2.4缺點
隨著業(yè)務邏輯的增加捺宗,一個頁面可能會非常復雜柱蟀,UI 的改變是非常多,造成 View 的接口會很龐大蚜厉,Presenter層的代碼也會越來越臃腫长已。
2.5適用場景
對于業(yè)務很復雜的大型APP來說,過多的Model 昼牛,View术瓮, Presenter,就會造成視覺疲勞贰健,不利于維護和管理胞四;對于業(yè)務很簡單的小型APP來說,只需要幾個類就可以解決的事情伶椿,使用MVP會多出一大堆接口撬讽,雖然代碼層次清晰了,但開發(fā)成本變高了悬垃。所以MVP適合不大也不小的項目游昼。
3、MVVM
3.3優(yōu)點
(1) 低耦合尝蠕。View可以獨立于Model變化和修改烘豌,一個ViewModel可以綁定到不同的View上,當View變化的時候Model可以不變看彼,當Model變化的時候View也可以不變廊佩。
(2) 可重用性。你可以把一些視圖邏輯放在一個ViewModel里面靖榕,讓很多view重用這段視圖邏輯标锄。
(3) 獨立開發(fā)。開發(fā)人員可以專注于業(yè)務邏輯和數據的開發(fā)(ViewModel)茁计,設計人員可以專注于頁面設計料皇,生成xml代碼。
(4) 可測試星压。界面向來是比較難測試的践剂,而現在測試可以針對ViewModel來寫。
3.4缺點
bug不好找娜膘,比如界面異常逊脯,有可能是View出錯,也有可能是ViewModel的業(yè)務邏輯有問題竣贪,也有可能是Model的數據出錯军洼。對于過大的項目巩螃,數據綁定會導致內存開銷大,而對于簡單的項目匕争,使用MVVM有點大材小用牺六。
3.5適用場景
雖然MVVM兼容當下使用的 MVC/MVP 框架。但是不適用于簡單的界面和太過復雜的界面汗捡。對于簡單界面而言淑际,MVVM反而使邏輯復雜化了,對于復雜界面而言扇住,相對應的ViewModel的構建和維護成本就會變的很高春缕。