實現了《MVVM 在美團點評酒旅業務中的實踐》例子程式碼
參考《MVVM 在美團點評酒旅業務中的實踐》 學習基於RAC的MVVM實現,這個美團的技術分享還是不錯的,就是隻有片段程式碼沒找到完整的實現工程。按照我自己的學習習慣,一定會自己看一遍,理解後在敲一遍程式碼;敲程式碼過程中發現美團的這個分享有幾個點沒有串接起來,只好翻看RAC的很多資料,終於把這個樣例完整串接了起來。完整工程如下:
https://github.com/smallhorse87/RacBasedMVVMExample
論一個完整樣例對於學習新技能入門的重要性
很多時候就是一個小點堵著,導致沒辦法繼續往下學習;一個點堵住,就意味著不得不放棄。
對於RAC和MVVM的新認識
RAC可以非常方便的實現單向、雙向綁(強調的是資料流動方向);綜合繫結(強調對資料複合、過濾、策略判斷)。比起自己寫觀察者更加簡練、優雅。
示例中對於每個cell都有一個對應的view model;對比我自己之前的MVVM架構,拆分粒度更加細小。帶來的好處就是複用的可能性更多。
view model相當於model和view之間的協調者,model指導view如何展示,以及響應來view的UI事件(命令)。這和我過去的認識有很大區別,擴大了view model的職責範圍,且view model靠UI更加近。
view中只剩下了不變佈局,可變的內容全部抽取到了view model中,非常符合開閉原則。帶來的直接好處就是UI可以通用化。
美團分享裡提到,MVVM化後自動化測試可以覆蓋到更多程式碼。這個是當然的,因為很多view承擔的輕邏輯被分解到view model中。
最後說下對RAC的理解,在RAC幫助下可以非常方便實現MVVM,但RAC的功能不只這一點。它實際是個響應式、函式式、鏈式程式設計的框架。博大精深,我還需要多研究。
對了,我已經用MVVM將影秀城的影秀卡支付模組重寫了一遍。
多與人接觸,多與外界接觸,發現自己真正的點位所在!