Android作為目前移動互聯網領域當中的主流系統,其開發無疑成為行業大熱。 Android開發人員在工作中不可避免的將遇到項目架構的設計的問題,對于這個問題,很多開發人才雖然具有開發經驗,但卻不一定能很好地進行解釋。對于這個問題,中培偉業《Android APP開發應用實踐》培訓專家劉老師給出了專業回答。
劉老師指出,對很多開發新人來說,這個問題體現著項目分層、功能模塊劃分以及公共模塊提取等基本意識,以及對一些經典架構的理解,比如MVCMVPMVVMCLEAN等。其主要涉及到以下幾個方面的問題。
1.你為什么選擇使用MVC而不是MVP或者其他架構?
這個問題實際考察的是你對市面上主流的Android架構模式的了解。你至少需要知道每種架構的大致結構,然后了解一下它們各自解決的是其它架構無法解決的什么問題。最后,在談你自己的選擇時,結合項目的特點來說就可以了。其實,大部分學生時期的項目用個MVC就足夠了,如果你代碼行數最多的Activity都不到百行,那么使用MVP或者其它架構給你帶來的額外負擔恐怕要比你的收益高很多,切忌矯枉過正。不過,抱著學習心態去使用這些架構都是值得鼓勵的。
2.寫過BaseActivityBaseFragment怎么設計的?
劉老師的觀點是:一是在項目開始階段可以先提出一個基類,但不用花太多時間想著怎么填充內容進去,很可能得不償失,其實隨著你項目的進展,那些重復實現的內容就會慢慢浮現,這些內容就是需要你在基類里實現的。二是在你實在不知道BaseActiviy里要放些什么的時候,至少可以編寫各個生命周期方法中的的log,以及像eventbus這類第三方庫的初始化以及銷毀操作。
3.你項目中的package劃分,是按照層次劃分的呢,還是按照功能劃分的呢為什么?
按層次劃分的package這個大家可能比較常用,那么按功能劃分呢可以看下面這張圖。 這么做的好處是什么呢看到代碼結構你就能辨別這個app是干嘛的更加模塊化代碼切換更容易更高級別的抽象功能和層都分離開來了可讀性更強以及更易維護的結構更高的內聚更易擴展更少遇到改動無關類或者文件的情況添加或者移除功能要容易很多更多可復用的模塊。 我這里并不是說按功能劃分就比按層次劃分好,只是想讓大家看看別的思路。這題沒有絕對的答案,但一定說出你在劃分時的思考。
4.了解過AOP項目中有用到過么?
AOP面向切面編程與面向對象編程對應。我們都知道面向對象描述的是縱向上的關系,從父到子再到孫。而面向切面解決的是橫向的問題,這些問題可以簡單地理解為與業務邏輯無關的代碼重用問題。大家在自己的項目其實都或多或少的用到過,比如在處理Http, SharedPreferences, Json, Xml, File, Device, System, Log, 格式轉換等是,我們提取出來的公共類。 這樣做能夠使得App整體的結構更清晰合理,避免局部的代碼臃腫,方便開發、測試以及后續的維護。