精通android體系架構、mvc、常見的設計模式、控制反轉(ioc)

來源:互聯網
上載者:User
1,請看某個著名的it公司一則招聘資訊的其中一條要求:“熟悉android系統架構及相關技術,1年以上實際android平台開發經驗;”,裡面非常明確的說道要求熟練android系統架構,這從某種程度上說明了對android體系架構的理解的重要性,下面我們看看android體繫結構圖,該圖源自android的文檔:

  很明顯,包含四個主要的層次:

  linuxkernel:負責硬體的驅動程式、網路、電源、系統安全以及記憶體管理等功能。

  libraries和androidruntime:libraries:即c/c++函數庫部分,大多數都是開放原始碼的函數庫,例如webkit,該函數庫負責android網頁瀏覽器的運行,例如標準的c函數庫libc、openssl、sqlite等,當然也包括支援遊戲開發2dsgl和3dopengles,在多媒體方面有mediaframework架構來支援各種影音和圖形檔案的播放與顯示,例如mpeg4、h.264、mp3、aac、amr、jpg和png等眾多的多媒體檔案格式。android的runtime負責解釋和執行產生的dalvik格式的位元組碼。

  applicationframework(應用軟體架構),java應用程式開發人員主要是使用該層封裝好的api進行快速開發。

  applications:該層是java的應用程式層,android內建的googlemaps、e-mail、即時通訊工具、瀏覽器、mp3播放器等處於該層,java開發人員開發的程式也處於該層,而且和內建的應用程式具有平等的位置,可以調用內建的應用程式,也可以替換內建的應用程式。

  上面的四個層次,下層為上層服務,上層需要下層的支援,調用下層的服務,這種嚴格分層的方式帶來的極大的穩定性、靈活性和可擴充性,使得不同層的開發人員可以按照規範專心特定層的開發。

  android應用程式使用架構的api並在架構下運行,這就帶來了程式開發的高度一致性,另一方面也告訴我們,要想寫出優質高效的程式就必須對整個applicationframework進行非常深入的理解。精通applicationframework,你就可以真正的理解android的設計和運行機制,也就更能夠駕馭整個應用程式層的開發。

  2,android的官方建議應用程式的開發採用mvc模式。何謂mvc?先看看

  mvc是model,view,controller的縮寫,從可以看出mvc包含三個部分:

  l模型(model)對象:是應用程式的主體部分,所有的商務邏輯都應該寫在該層。

  l視圖(view)對象:是應用程式中負責產生使用者介面的部分。也是在整個mvc架構中使用者唯一可以看到的一層,接收使用者的輸入,顯示處理結果。

  l控制器(control)對象:是根據使用者的輸入,控制使用者介面資料顯示及更新model對象狀態的部分,控制器更重要的一種導航功能,想用使用者出發的相關事件,交給m哦得了處理。

  android鼓勵弱耦合和組件的重用,在android中mvc的具體體現如下:

  1)視圖層(view):一般採用xml檔案進行介面的描述,使用的時候可以非常方便的引入,當然,如何你對android瞭解的比較的多了話,就一定可以想到在android中也可以使用javascript+html等的方式作為view層,當然這裡需要進行java和javascript之間的通訊,幸運的是,android提供了它們之間非常方便的通訊實現。

  2)控制層(controller):android的控制層的重任通常落在了眾多的acitvity的肩上,這句話也就暗含了不要在acitivity中寫代碼,要通過activity交割model商務邏輯層處理,這樣做的另外一個原因是android中的acitivity的回應時間是5s,如果耗時的操作放在這裡,程式就很容易被回收掉。

  3)模型層(model):對資料庫的操作、對網路等的操作都應該在model裡面處理,當然對業務計算等操作也是必須放在的該層的。

  3,設計模式和ioc(控制反轉)

  毫無疑問,android的之所以能夠成為一個開放的氣象萬千的系統,與設計模式的精妙應用是分不開的,只要你稍微用心觀察,就會發現在android中到處都是a設計模式或者設計模式的聯合運用,一下的設計模式是您想遊刃有餘的駕馭android必須掌握的:

  ltemplatemethod模式

  lfactorymethod模式

  lobserver模式

  labstractfactory模式

  ladapter模式

  lcomposite模式

  lstrategy模式

  lstate模式

  lproxy模式

  lbridge模式

  literator模式

  lmediator模式

  lfa?ade模式

  android架構魅力的源泉在於ioc,在開發android的過程中你會時刻感受到ioc帶來的巨大方便,就拿activity來說,下面的函數是架構調用自動調用的:

  protectedvoidoncreate(bundlesavedinstancestate);

  不是程式編寫者主動去調用,反而是使用者寫的代碼被架構調用,這也就反轉了!當然ioc本身的內涵遠遠不止這些,但是從這個例子中也可以窺視出ioc帶來的巨大好處。此類的例子在android隨處可見,例如說資料庫的管理類,例如說android中sax的handler的調用等。有時候,您甚至需要自己編寫簡單的ioc實現,上面展示的多線程現在就是一個說明。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.