設計模式

軟件設計中常用的mvc,mvp,mvvm網上的教程已經很多了,我是拜讀了之後做一下總結
參考博文:博文一

1、mvc
這裏寫圖片描述
單向循環
view:xml
controller:activity
modle:viewModle
view在controller中註冊監聽,當觸發時由controller分配給modle去處理
在第一篇博文裏建議modle以接口方式聲明,便於擴展;之後實現一個具體類實現它;controller中持有的modle就是這個具體類的實例。
在modle處理出結果後由監聽返回到controller,controller中實現刷新view,此處也可以理解爲,通過modle註冊在controller中的監聽,modle直接刷新了view;我考慮的是第一種,博文中做第二種理解,我對於view直接觸發modle有誤區,後來想是否是允許view中直接使用modle的某些返回值?

2、mvp
在mvc的基礎上將view和modle完全解耦,只通過presenter通訊,這樣一來劃分就變成了:
view:xml+activity
presenter:控制類文件
modle:數據
這裏寫圖片描述
其中view和presenter的關係是一對多
此種方式可以寫一個小view用於測試presenter,比mvc更靈活
最好的方式是使用fragment作爲view層,而activity則是用於創建view層(fragment)和presenter層(presenter)的一個控制器。
但其實我覺得這裏modle和presenter之間的聯繫是雙向的,有請求有callback,不過這裏的思維應當是請求放在presenter當中了

3、MVVM
這東西應該是 M V VM,V和VM之間使用觀察者模式綁定,動態更新。它介於MVC和MVP之間。
有人說VM是綁定view的presenter,兩者區別不大,文中更是以databinding做舉例分析,我這裏的理解是,純databinding只是將activity和xml進行綁定,而不是像模式裏這樣把view和viewmodle進行綁定。
這裏寫圖片描述
之前看過大牛的mvvm,觀察者模式寫法,用activity當註冊平臺,一個activity中包括多個fragment,通過多個vm進行數據控制。
vm要繼承BaseObservable,但文中的例子有一點不好,沒有充分發揮觀察者模式的update功能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章