一天一面試題---第二天(MVP和MVC是什麼,有什麼區別)
MVC: View接收到用戶的操作之後,將用戶的操作來交給Controller(activity),Controller完成業務邏輯,將得到的結果封裝成Model,再進行View的更新.Controller做的事情非常多,即做了View層邏輯,又做了Model層邏輯,導致過度臃腫.
View: layout也可以是自定義View
Model: JavaBean,SqliteDataBase;
Controller: Activity
比如我們創建一個項目的時候,View:activity_main.xml Controller:MainActivity 當我們獲取到數據的時候創建的Bean就是Model
當用戶點擊一個Button時,Controller層處理Button的點擊事件,開始向網絡請求,獲取到網絡數據,封裝成一個JavaBean(Model),Model則將數據傳給Controller,再由Controller更新UI.
MVP:當View層接到用戶點擊的事件後,會將用戶的操作交給Presenter,Presneter收到View層指令,可以自己處理,也可以交給Model層處理,一般情況是交給Model層來處理,當Model層處理完事件後,將得到的結果通過接口返回給Presneter,最後Presneter則將封裝好的數據轉給View,最後View層進行渲染;
View:Activity,Fragemnt. View層只有Presenter的引用,
Presneter:就是View和Model層的橋樑. Presenter層既會有View層引用,也會有Model層引用
Model:數據處理層. Model層只有Presneter的引用
所以MVP其實也就是通過Presenter這個橋樑,來接通View和Model.