IOS 與ANDROID架構及應用開發模式對比一

來源:互聯網
上載者:User

標籤:ios架構   android架構   

           IOS 和ANDROID作業系統都是目前流行的移動作業系統,被移動終端和智慧型裝置大量採用,兩者都採用了先進的軟體技術進行設計,為了方便應用開發兩者都採用了先進的設計模式。兩者在架構設計上都採用了什麼技術?都採用了什麼設計模式?兩者設計思路和應用開發模式有什麼異同呢?

  1. 兩者都採用了架構模式。

IOS 的架構稱為Cocoa Touch。

          架構提供兩個作用,一是類的集合,每個類構建一個問題空間,並提供完整的解決方案和服務;二更重要的是架構中的類相互依賴構成一個整體,制訂並實現整個應用程式的結構。架構定義的結構是泛型結構,為應用程式提供一個執行的模板,因此許多架構類的實現是抽象的或者有意不完整,這樣的類通常實現大量的常見代碼,但卻讓工作的重要部分,要麼未完成,要麼以安全的預設完成。

  

          因為應用程式結構是通用的,開發人員通過架構提供的鉤子或其它方式如子類化將其特殊化,以滿足特定應用的要求;設計一個應用程式就是將應用程式代碼插入到架構提供的設計中來完成設計,並由架構驅動程式的執行和管理應用程式的生命週期。

          要使用架構,開發人員必須接受它定義的應用程式結構,然後根據需要,儘可能多的使用和定製它的類,將特定的應用進行改造,以適合該結構。

          從廣義的隱喻層面而言,架構就像房屋的架構,而應用程式代碼就好比大門、窗戶、壁板和其他元素,是這些東西讓房子與眾不同。

          IOS 的架構和ANDROID架構都為應用程式提供了多種方式,來修改和擴充其通用行為。

          特定於應用的行為添加到架構的一種方式,就是建立架構類的自定子類。子類填補了其超類中的空隙,提供了架構類所缺少的部分。自定子類的執行個體,佔據其在架構所定義的對象網路中的位置,也繼承架構與其他對象合作的能力。這種設計模式稱為模板模式。

         如ANDROID就採用這種模式來實現應用程式行為的定製化。 ANDROID架構為應用程式提供了ACTIVITY、 SERVICE、Content providers、Broadcast receivers四大應用組件的通用預設實現,應用程式通過子類化這些組件,並根據需要覆蓋組件的一些方法就可以完成一個應用程式開發。

         而IOS則採用委託和協議模式來實現應用程式的一些特定行為。

  在IOS中, 由Cocoa Touch提供的架構之一UIKit來提供和管理應用程式的行為,包括應用程式的啟動直到退出,UIKit 架構管理著應用程式的許多核心行為。

         UIKit 架構套件括一個UIApplication 對象,UIApplication 對象是應用程式的心臟,它從系統接收事件,然後將事件指派到應用程式實現的自定代碼進行處理。

         具體的應用程式只需執行個體化UIApplication 對象對象即可,無需進行子類化,應用程式的特定行為採用委託和協議模式由一個應用程式委派物件來實現。

         應用程式在調用UIApplication 對象的UIApplicationMain函數來啟動應用時,通過執行個體化一個應用程式委派物件並作為參數傳給UIApplicationMain函數。

         應用程式委託作為 UIResponder 的子類,也實現了UIApplicationDelegate協議,用來處理 UIApplication 對象委派的應用程式相關事件(主要是各種應用程式狀態改變事件),來實現應用程式的定製化。

         協議模式是osx 作業系統架構採用的特有的設計模式之一。協議是可程式化介面的聲明,任何類都可以實施它的方法。與協議相關聯的類執行個體,調用協議的方法,並擷取由該類正式採用和實現該協議所返回的值。對象之間的此類通訊,產生了一個特定目標,例如解析 XML 代碼或拷貝對象。協議介面兩邊的對象可以通過繼承,實施遠距離彼此相關。協議因此和委託一樣,可作為子類化的替換手段。Apple 提供的架構,聲明了數十個協議。

      

     

二  應用開發都採用了模型-視圖-控制器(MVC) 設計模式


 

        如IOS架構中的視圖控制器對象擔當MVC模式中的控制器角色,管理應用程式內容在螢幕上的呈現。視圖控制器負責顯示和管理單個視圖及其分視圖,以及那些視圖與應用程式的其他部分之間的互動。呈現時,視圖控制器將視圖安裝到應用程式的視窗中,使它們顯示出來。

        在ios 的UIKit 架構中的UIViewController 類是所有視圖控制器對象的基礎類, 每個視圖控制器對象是 UIViewController 類的執行個體,它提供了一些預設功能,用於載入視圖、呈現視圖和旋轉視圖,以響應裝置的旋轉以及幾個其他標準的系統行為。應用程式實現時需要對UIViewController 類進行子類化,用來載入應用程式特定視圖。

        UIKit 和其他架構定義附加的視圖控制器類,來實現標準系統介面,像挑選器、標籤欄介面和導航介面。

       視圖控制器對象提供基礎結構,來管理內容相關的視圖並協調視圖的顯示與隱藏。視圖控制器還用來管理應用程式視圖的子階層。

        因為 iOS 應用程式顯示內容的空間很有限,視圖控制器也提供了所需要的基礎結構,從一個視圖控制器中撤出視圖,以另一個視圖控制器中的視圖來替換。因此,視圖控制器是您實施各種類型的內容轉換的方式。 視圖控制器對象,可以作為自包含的單元來看,它處理其自身視圖的建立和銷毀,處理其視圖在螢幕上的顯示,並協調視圖和應用程式中的其他對象之間的互動。

         應用程式通過串聯圖或nib資源檔載入視圖控制器和相關的視圖。串聯圖或nib資源檔含有視圖和視圖控制器,應用程式通過它們,將內容呈現在螢幕上。串聯圖中的視圖,是根據顯示它們的視圖控制器來組織的。串聯圖也確定一組視圖的轉換(稱為過渡),將使用者從一組視圖帶到另一組。

         當您建立項目時,主串聯圖檔案的名稱通過應用程式套件組合含的 Info.plist 檔案中的 NSMainStoryboardFile 鍵來指定。使用 nib 檔(而不是串聯圖)的應用程式,可以使用 NSMainNibFile 鍵替換 NSMainStoryboardFile 鍵,並使用該鍵來指定使用的主 nib 檔。


         IOS架構的視窗對應一個 UIWindow 對象,UIWindow 對象協調一個或多個視圖在螢幕上的呈現。大多數應用程式只有一個視窗,用於在主畫面上呈現內容,但應用程式可能會有另外一個視窗,將內容顯示在外接顯示器上。

 

         要更改您的應用程式的內容,需使用視圖控制器,來更改在對應視窗中顯示的視圖。您不會把視窗本身替換。

         除了充當視圖的宿主以外,視窗還配合 UIApplication 對象工作,將事件傳送到視圖和視圖控制器。

         IOS架構的視圖對象包括視圖、控制和層對象等對象,視圖和控制將應用程式的內容直觀地呈現出來。視圖用來將內容繪製在指定的矩形地區內,並響應該地區的事件。控制是一類專門的視圖,負責實施常見的介面對象,如按鈕、文本欄和切換開關。

         視圖對象通過應用程式的控制器對象,瞭解模型資料的更改,並通過控制器對象,將使用者發動的修改,傳達到應用程式的模型對象

        UIKit 架構提供標準的視圖,每個視圖對象最終繼承自 UIView 類,用於呈現許多類型的內容。通過直接將 UIView(或它的子類)子類化,您還可以定義自己的自定視圖。

         除了包括視圖和控制以外,應用程式還可以將 Core Animation 層併入其視圖和控制分層結構中。層對象實際是代表視覺內容的資料對象。視圖在幕後大量使用層對象,來渲染其內容。您還可以將自定的層對象,添加到介面,以實施複雜的動畫和其他類型的複雜視覺效果。

          UIKit 架構提供的視圖組織為視圖層次。應用程式所顯示的視圖,會排列成階層(直觀上基於包含)。此模式允許應用程式將單個視圖和合成視圖同等對待。層次的根部為一個視窗對象;根部以下的每個視圖,都有一個父視圖,以及零個或多個子視圖。父視圖包含子視圖。視圖層次是繪圖和事件處理的結構性組件。

   

         IOS架構中的模型對象可以由UIKit架構提供的UIDocument對象來實現文件類型的資料模型。還可以根據需要採用架構提供的資料類型定義自己的資料模型及其相關商務邏輯。

         IOS應用程式還可以採用Core Data架構來建立和實現模型對象。Core Data 提供了一個基礎結構,來管理對模型對象所做的修改,並將模型Object Storage Service到一個檔案中,然後再將它們取回來。Core Data架構還提供了許多其它特性:如自動支援撤銷和重做,以及維持對象之間的相互關係;允許在任何給定的時間內,僅將模型對象的子集儲存在記憶體中;使用模式來描述模型對象;允許維護編輯對象的不相交集合;支援資料儲存版本管理和遷移。版本管理可讓您輕鬆地將舊版本的使用者檔案升級到目前的版本;允許在 iCloud 中儲存資料,然後從多個裝置訪問資料。

         而android 系統沒有獨立的視圖控制器對象,而由應用程式的ACTIVITY組件擔當視圖控制器角色,用來建立和載入、呈現視圖,通過模型適配器Adapter介面載入模型對象提供的資料及更新顯示到視圖上。使用者在視圖上對資料模型的改變也由ACTIVITY負責通過模型適配器介面更新到模型。Adapter擔當資料模型和視圖之間的中間人角色。

         android 系統的視窗對象對應用程式不開放,由架構的視窗管理服務進行管理。

         android 系統也是一個應用程式對應一個視窗,對應著系統提供的root view 對象。視圖對象在視窗中進行呈現。

         android 系統的每個視圖對象都繼承自View類,包括View和ViewGroup 對象。一個應用的ui 由View和ViewGroup 對象組成的視圖樹構造,View對象用來在螢幕上繪製內容並和使用者互動,如按鈕buttons 或 text fields等。ViewGroup 對象 是視圖的容器,可以包含其它View和ViewGroup對象,以便實現 介面的布局。 ViewGroup 對象和其中包含的其它View和ViewGroup對象以 視圖樹的形式加以組織。

android 系統的應用程式ui的可視結構由具體的布局對象layout 來定義,每個具體的布局對象layout都是一個 ViewGroup 對象 。包括Linear Layout、Relative Layout、Web View等。

        組成應用程式介面的由多個子視圖組成的視圖對象通過擔當視圖控制器角色的activity組件 的setContentView函數載入進應用進行顯示。

        android 系統的模型對象的提供主要由Content providers來提供,並通過activity提供的一個模型適配器Adapter對象提供給視圖。

                                                                                                              著作權,轉載時請顯要處註明連結,謝謝!

聯繫我們

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