IOS 和ANDROID操做系統都是眼下流行的移動操做系統,被移動終端和智能設備大量採用,二者都採用了先進的軟件技術進行設計,爲了方便應用開發二者都採用了先進的設計模式。android
二者在框架設計上都採用了什麼技術?都採用了什麼設計模式?二者設計思路和應用開發模式有什麼異同呢?ios
IOS 的框架稱爲Cocoa Touch。編程
框架提供兩個做用,一是類的集合,每個類構建一個問題空間,並提供完整的解決方式和服務。二更重要的是框架中的類相互依賴構成一個整體,制訂並實現整個應用程序的結構。框架定義的結構是泛型結構,爲應用程序提供一個運行的模板,所以不少框架類的實現是抽象的或者有意不完整,這種類一般實現大量的常見代碼,但卻讓工做的重要部分,要麼未完畢。要麼以安全的默認方式完畢。設計模式
因爲應用程序結構是通用的,開發者經過框架提供的鉤子或其餘方式如子類化將其特殊化。以知足特定應用的要求;設計一個應用程序就是將應用程序代碼插入到框架提供的設計中來完畢設計,並由框架驅動程序的運行和管理應用程序的生命週期。安全
要使用框架。開發者必須接受它定義的應用程序結構,而後依據需要,儘量多的使用和定製它的類。將特定的應用進行改造,以適合該結構。網絡
從廣義的隱喻層面而言,框架就像房屋的框架,而應用程序代碼就比如大門、窗戶、壁板和其它元素,是這些東西讓房子不同凡響。框架
IOS 的框架和ANDROID框架都爲應用程序提供了多種方式。來改動和擴展其通用行爲。ide
特定於應用的行爲加入到框架的一種方式。就是建立框架類的自定子類。子類填補了其超類中的空隙,提供了框架類所缺乏的部分。函數
自定子類的實例。佔領其在框架所定義的對象網絡中的位置,也繼承框架與其它對象合做的能力。佈局
這樣的設計模式稱爲模板模式。
如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框架的視圖對象包含視圖、控制和層對象等對象,視圖和控制將應用程序的內容直觀地呈現出來。視圖用來將內容繪製在指定的矩形區域內,並響應該區域的事件。控制是一類專門的視圖,負責實施常見的界面對象。如button、文本欄和切換開關。
視圖對象經過應用程序的控制器對象。瞭解模型數據的更改,並經過控制器對象。將用戶發動的改動,傳達到應用程序的模型對象
UIKit 框架提供標準的視圖,每個視圖對象終於繼承自 UIView 類。用於呈現不少類型的內容。經過直接將 UIView(或它的子類)子類化。您還可以定義本身的自定視圖。
除了包含視圖和控制之外,應用程序還可以將 Core Animation 層併入其視圖和控制分層結構中。層對象實際是表明視覺內容的數據對象。
視圖在幕後大量使用層對象,來渲染其內容。您還可以將自定的層對象,加入到界面。以實施複雜的動畫和其它類型的複雜視覺效果。
UIKit 框架提供的視圖組織爲視圖層次。應用程序所顯示的視圖,會排列成層次結構(直觀上基於包括)。此模式贊成應用程序將單個視圖和合成視圖同等對待。
層次的根部爲一個窗體對象;根部下面的每個視圖,都有一個父視圖,以及零個或多個子視圖。
父視圖包括子視圖。
視圖層次是畫圖和事件處理的結構性組件。
IOS框架中的模型對象可以由UIKit框架提供的UIDocument對象來實現文檔類型的數據模型。還可以依據需要採用框架提供的數據類型定義本身的數據模型及其相關業務邏輯。
IOS應用程序還可以採用Core Data框架來建立和實現模型對象。Core Data 提供了一個基礎結構。來管理對模型對象所作的改動。並將模型對象存儲到一個文件裏,而後再將它們取回來。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對象提供給視圖。
版權所有,轉載時請顯要處註明連接,謝謝!