本文主要總結了幾種常常使用的架構模式, 基本是層層遞進的轉載請註名出處 http://blog.csdn.net/uxyheaven, 良好的排版在https://github.com/uxyheaven/閱讀git
假設認爲本文不錯, 請在csdn給個頂, github給個star.github
Native app的開發相比傳統的項目迭代週期要短很是多, 需求的變化也頻繁一些, 在開發的不一樣生命週期裏採用不一樣的架構模式可以有效的節約開發時間, 提升開發效率, 這篇文章介紹幾種常常使用的架構模式:數據庫
移動app通常都是採用經典的mvc框架架構
層次 | 做用 | 設計原則 |
---|---|---|
模型層(model) | 封裝了應用的一系列數據, 並定義了操做, 處理這些數據的邏輯和計算規則。 | 經過Notification,KVO對控制器進行反饋 |
視圖層(view) | 視圖對象是一個應用中, 用戶能夠看到的對象. 視圖對象知道怎樣繪製本身, 也能夠響應用戶的操做. 視圖對象的主要目的之中的一個是將應用模型對象中的數據顯示出來, 並贊成用戶編輯該數據 | 視圖經過不能直接操做模型層, 經過target-action, delegate, dataSource和控制器進行反饋 |
控制器層(controller) | 控制器層是在視圖層和若干個模型層的中間人 | c可以直接操做模型層和視圖層 |
總結:C對M:APIC對V:OutletV對C:Target-action, Delegate,DatasourceM對C:Notification。KVOmvc
MVVM是在MVC的基礎上多了一個View Model: 表示邏輯, 將 model 的數據轉換爲 view 可以呈現的東西. 適合大量展現類的Appapp
Hierarchical MVC, 把client應用程序分解爲有層次的父子關係的MVC, 重複應用這個模式, 造成結構化的client架構. 適合重型B/S架構的WebApp.框架
一個MVC模塊由應用程序的一個模塊抽象而成. 當中很是重要的一個概念就是 Parent MVC , 它可以相應界面上的實體, 也可以是一個抽象的對象. 設想一個app 有標籤欄, 工具欄, 導航欄, 主工做區, 相應到HMVC上就是這個app最底部的標籤欄 是 Layer1, Layer2 導航欄,主要工做區, 工具欄. 假設認爲 Layer2 太複雜可以吧主要工做區放到 Layer3, 依次類推.函數
Controller 是功能模塊的總控室, 它負責和子Controller或父Controller通訊,並通知它的 View 處理改變界面顯示, Model 處理一些業務邏輯或數據庫訪問操做. 如才的樣例裏, 點擊了工具欄裏的一個button, 工具欄的Controller 響應這個event, 發現是要切換主工做區, 工具欄作不了,就傳遞他的父Controller處理(假設父Controller也處理不了, 就繼續往上傳遞)而後標籤欄的Controller處理切換主工做區.工具
長處:post
咱們在來看一下經典的三層架構
從上至下爲
層次 | 做用 | 設計原則 |
---|---|---|
表示層(UI) | 向用戶展示特定業務數據。採集用戶的輸入信息和操做 | 用戶至上。兼顧簡潔;不包括不論什麼業務相關的邏輯處理 |
業務邏輯層(BLL) | 從DAL中獲取數據, 在UI顯示; 從UI中獲取用戶指令和數據, 運行業務邏輯或經過DAL寫入數據源 | 做爲U層與D層的橋樑,目的在於展示清晰的函數結構, 僅僅負責數據處理傳遞, 不涉及SQL語句和ADO.NET |
數據訪問層(DAL) | 直接操做數據庫,針對數據的增添 刪除 改動 查找; 詳細爲業務邏輯層或表示層提供數據服務。 | 專門操做數據庫, 不考慮數據合法性. 數據庫錯誤返回-1, 邏輯錯誤返回0, 並告知錯誤緣由, 成功返回1 |
而後呢,咱們現在的架構則是
在三層架構的基礎上多了業務規則層, 一般的三層是把業務邏輯和業務規則合併爲一個層。統稱爲業務層.業務規則層的提出,既可以及時處理用戶輸入的不合法信息, 又可以及時處理數據庫錯誤, 增大了業務邏輯層的結構清晰度, 讓業務邏輯人員專心致志作邏輯
從上至下爲
層次 | 做用 | 設計原則 |
---|---|---|
業務規則層(ECL) | 對於UI層傳下來的參數來講,檢查合法性。 | 用戶至上,兼顧簡潔。不包括不論什麼業務相關的邏輯處理 |
引入service層的架構和普通的分層架構的不一樣是: service層內部有數據, 可以單獨執行.
從上至下爲
層次 | 做用 | 設計原則 |
---|---|---|
表現層 | 顯示與用戶的互交 | |
服務層 | service層提供表現層的業務邏輯入口,經過定義接口服務的形式,經過接口調用來完畢. | |
業務邏輯層 | 1接收服務層傳來的DTO, 而後依據業務規則, 對傳入的DTO進行加工, 返回加工後的信息 2 需要爲每個對象提供業務行爲, 並且這些對象之間是獨立的 3 業務對象之間的交互流程經過服務層來組織 | |
數據訪問層 | 本地數據遠程數據的訪問接口 |
viper這裏很少說了,請想了解的自行搜索