移動App開發中的View解耦問題,app

來源:互聯網
上載者:User

移動App開發中的View解耦問題,app
這幾天在做給IOS代碼降耦的事情,順便嘮叨幾句開發中的View解耦問題。
首先,我們先定位一下View的角色:View應該只操心前/後景色,字型屬性,布局特性,x/y/width/height等純視覺屬性。不應該操心資料載入、修改,事件響應等Model和Controller關心的事。當然,也包括自訂的View。


接下來討論針對這個角色在實際開發中如何降低View部分耦合對整體架構的衝擊。
1、View的初始化、屬性設定應該有自己的Owner,不應該放到Controller中去。當然,這個工作可能由Android中的XML布局或IOS中的Xib來替代。Controller只負責拿到View的引用做後續的設定預設資料,安裝Listener等操作就可以了。
2、資料提供和更新重新整理,都應該由Controller觸發,如果資料比較複雜,像列表、宮格等,應該添加Adapter層來做Model和View的解耦。
3、事件的觸發應該通過Listener來實現View與Controller的解耦,不要把事件對應的邏輯直接寫到View中去,那會影響View的重用性,使代碼難於維護。
4、把螢幕適配的問題在View內部解決,不要在Controller中去做。比如Android中的XML中實現靈活布局,或者IOS中使用AutoLayout。


最後說一下實際操作。
Android中提供了XML布局其實變相做了強制解耦,使得我們使用過程中很少會在View中混雜其它代碼,我們只需要注意當View的Model比較複雜時,增加Adapter層來解耦就可以了。
而IOS中由於曆史原因普遍採用的代碼產生View,會導致在Controller中產生View,設定View屬性,以及在View中實現功能邏輯等MVC耦合的現象比較嚴重。鑒於Storyboard對Controller限制較多,這裡建議在在大型IOS項目中,參照Android的方式,通過Xib提供View布局,並把View執行個體通過IBOutlet映射到Controller中,通過Controller載入資料並安裝Listener。不要在Controller中出現操作View的視覺屬性的代碼。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.