MVC:
MVC將程式分為三部分,Model、View、Controller,但在IOS中,ViewController通常把View和Controller混在一起,導致程式維護不易。
優點:
- 對於任務簡單的頁面,例如單純顯示圖片或文字,無任何複雜商業邏輯,用MVC最方便、快速。
缺點:
- 當有較複雜的商業邏輯時,更新view的code和處理商業邏輯的code混在一起,導致不方便修改與維護。
MVP:
MVP將程式分為三部分,Model、View、Presenter,Presenter負責處理商業邏輯部分,View和Presenter透過互相持有reference來溝通(p.s. presenter持有view的weak reference來避免Strong Reference Cycles)。如此一來就能方便修改與維護。
優點:
- 易於修改與維護
缺點:
- 要更新view時仍需要再額外呼叫update view的function
MVVM:
MVVM將程式分為三部分,Model、View、ViewModel,ViewModel和MVP中的Presenter一樣示負責處理商業邏輯,但ViewModel和View之間有data binding,只要狀態改變,就能夠直接update view,無需額外呼叫update view的function
優點:
- 易於修改與維護
- 易於單元測試
缺點:
- 需要實作data binding機制