老梗的MVC v.s. MVVM🥸
紀錄個人理解,有錯請不吝糾正,感謝
最主要差異為用資料驅動view的更新(Data Binding),當資料異動時,去更新view
個人覺得是在Controller跟ViewModel的更新的行為。
MVC收到通知需要Controller主動去觸發更新,MVVM則因為已經跟資料綁定,當資料的狀態發生變化時,ViewModel會被通知,然後通過綁定自動更新相應的View。這種更新是被動的,因為是由綁定機制隱式地觸發和管理的。
有人說可以寫在VM裡,有人寫在VM很差要寫在Model。
我覺得可能要看複雜度來決定,VM的主要功能是把原始資料轉換成給View顯示用的資料。如果邏輯跟這個View有關是OK的。但如果是與這個View無關的邏輯的話(Application logic),可以在VM和Model中間再做一個service layer,這個service也屬於Model的一部分。
https://ithelp.ithome.com.tw/articles/10289734
https://developer.apple.com/library/archive/documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html
https://front-chef.coderbridge.io/2021/02/27/mvc-mvvm/
https://stackoverflow.com/questions/37671866/should-i-implement-business-logic-on-a-model-or-a-viewmodel
https://softwareengineering.stackexchange.com/questions/429244/the-right-place-for-app-logic-in-mvvm-context