MVC、MVP、MVVM的特性(for IOS)

MVC:

MVC將程式分為三部分,ModelViewController,但在IOS中,ViewController通常把View和Controller混在一起,導致程式維護不易。
優點:

  • 對於任務簡單的頁面,例如單純顯示圖片或文字,無任何複雜商業邏輯,用MVC最方便、快速。

缺點:

  • 當有較複雜的商業邏輯時,更新view的code和處理商業邏輯的code混在一起,導致不方便修改與維護。

MVP:

MVP將程式分為三部分,ModelViewPresenter,Presenter負責處理商業邏輯部分,View和Presenter透過互相持有reference來溝通(p.s. presenter持有view的weak reference來避免Strong Reference Cycles)。如此一來就能方便修改與維護。
優點:

  • 易於修改與維護

缺點:

  • 要更新view時仍需要再額外呼叫update view的function

MVVM:

MVVM將程式分為三部分,ModelViewViewModel,ViewModel和MVP中的Presenter一樣示負責處理商業邏輯,但ViewModel和View之間有data binding,只要狀態改變,就能夠直接update view,無需額外呼叫update view的function
優點:

  • 易於修改與維護
  • 易於單元測試

缺點:

  • 需要實作data binding機制