MVC: Model - View - Controller
MVP: Model - View - Presenter
MVC和MVP到底有什么區別呢?
從上圖可以看到在MVC里,View是可以直接訪問Model的,從而View里面是能包含Model的信息的,不可避免還要包括一些業務邏輯。在MVP里更關注Model的不變,而同時有多個對Model的不同展示。
把Controller和View混在一起,會有一些弊端:
1、難以測試。
2、代碼難以重用。
MVP是如何解決MVC的問題的?
在MVP里,Presenter完全把Model和View進行了分離,主要的程序邏輯在Presenter里實現,而且Presenter與具體的view是沒有一點關聯的,而是通過定義好的接口進行交互,從而使得在變更View的同時可以保持Presenter不變,即重用。
在MVP模式里,View只應該有簡單的Set/Get方法,用戶輸入和設置顯示的內容,除此不應該有更多的內容,絕不允許直接訪問Model,這就是與MVC最大的不同之處。