???? MVC,model,view,controller,是軟件代碼結構中最常見的一種框架,通過controller的控制去操作model層的數據,并且返回給view層展示。其原理是用戶觸發view層的事件后,會發送指令到controller層,再由controller層去通知model層數據改變,model層更新完數據后顯示在view層上。
??? 在android中,mvc架構中的model層對應的就是一些bean,也就是數據實體類,v對應的就是一些xml文件,c對應的就是activity,舉個栗子,當用戶進入到app的登陸界面時,輸入手機號和密碼,點擊登陸按鈕,LoginActivity中的login.xml就發送用戶的輸入給LoginActivity讓它去通知Model層進行數據邏輯處理,并返回給login.xml做出界面的改變。
??? MVC的缺點,由于界面都是寫在xml里,而且xml并不能對界面進行動態的改變,因此在activity里就難免有些操作界面元素的代碼,造成了C既是Controller又是View的情況,代碼維護起來是比較麻煩的。另外,M與V是相互可知的,代碼間存在耦合度也是比較大的。
??? MVP,是在MVC的基礎上演進的一種代碼架構,它是把Presenter作為溝通M和V的橋梁,把事件的處理全都交由Presenter,而之前的activity或者fragment就充當view層,這個架構使M與V解耦,對于M與P之間可以通過定義一些接口實現,例如用fragment 去實現一些在presenter中定義好的接口,而由activity去管理fragment。
??? MVP的缺點是接口可能會太多,這時需要充分利用基類接口,把一些常用的邏輯寫在基類接口里。
??? MVVM是把presenter變成ViewModel層,view 和ViewModel是相互綁定的關系,當ViewModel層的數據改變時,View層的數據也會改變。