iOS之網絡層的設計

本片文章主要講的網絡層和業務層的對接方面

我們常用的將數據交給業務層的有Delegate,Notification,Block三種方式。

我們根據:

  1. 盡可能減跨層訪問限制耦合
  2. 統一回調方法,便于調試和維護
  3. 跟業務層對接只采用一種對接手段
  4. 容易追蹤,容易維護
  5. 不會延長對象的生命周期
  6. 復合在離散場景下每次回調一致的規范

選擇Delegate方式。

交付什么樣的數據給業務層

這里有兩種方式:

  1. 將網絡層拿到的json數據轉化為對應的對象原型(通用類型)
  2. 采用適配器模式,我添加DataFactory對象用于封裝數據轉化的邏輯

分析一下兩種方式的優缺點:
方式1:

  1. 數組內容的轉化成本較高
  2. 容易出現類型爆炸,提高維護成本

方式2:

  1. 數據會散落在各處,提高維護成本
  2. 對數據內部的key值得替換成本較高

這里我們把方式一和方式二結合使用:
以Factory作為輸出的終端控制器,根據自己的需求定制不同的Factory,并在Factory內部對數據進行組裝之轉化為響應的對象模型。

對以上的說明:

  1. Factory是一個遵循RXBaseRequestDataReformer協議的對象
  2. Api的原始數據由manager保管,Factory方法取manager內的數據進
    行組裝,轉換并生成響應的對象模型
  3. 在一個view展示不同的數據的api數據的時候適宜使用Factory(因為Factory輸出標準化的對象原型)

采用Factory模式的好處:

  • 處理單view對多api以及多view對多api時非常優雅,隔離轉化邏輯和主體業務邏輯
  • 可以對Controller內部的代碼減負,提高靈活性,只切換Factory就能滿足不同的業務邏輯對數據的需要
  • 業務邏輯和業務有了適當的隔離,當業務邏輯發生改變時改變Factory即可

選擇集約型API的調用方式還是離散型API的調用方式

  • 集約型API的調用方式調用的所有的API只有一個類
  • 離散型API是一個API對應一個manager,并且manager只要提供參數就可以發起請求,API的名字和著陸方式已經集成到APImanager中
  • 對于網絡層的下層采用的是集約方式,對于和業務的對接層采用的是離散型的方式

采用離散化方式的優點:

  • API請求的著落點消失,離散型API可以很好的處理
  • 離散型API的調用方式可以給業務方提供靈活性

我們可以再底層采用集約化的方式進行數據請求,在業務方采用離散化的API來調用。

怎么進行APIManager的繼承,

由于子類可能重寫父類不允許重寫的方法,所以我們提供IOP(面向接口編程)方式來限制子類的重載。
這里是我網絡層封裝的源碼

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • iOS應用架構談 網絡層設計方案 前言 網絡層在一個App中也是一個不可缺少的部分,工程師們在網絡層能夠發揮的空間...
    其實也沒有閱讀 586評論 1 1
  • 最近接觸了幾名小學心理輔導老師,有目的地讓他們講了講小學生性教育的問題,沒想到收獲還真不小,整理了幾個小故事,分享...
    歲月包進粽子閱讀 4,685評論 4 8
  • (一)娃他舅 建筑隊里有一個被他們喚作“娃他舅”的人,三十多歲,蓄著特朗普一樣風吹一邊倒的長發,胡子邋里邋遢的,遠...
    明望舒閱讀 428評論 0 0
  • 01 我不知道夢想有幾斤幾兩 像小溪輕盈能爬上高山的肩膀 還是像高山雄壯不怕與江河相撞 但我知道夢想生病什么樣 他...
    葡葡萄閱讀 276評論 0 0
  • 本周主題《其實這個世界是有生命的》 本周主題讓我想起了多年前自己在QQ寫下的簽名,也是我對本周主題的闡釋: 生活就...
    路人夏閱讀 288評論 0 0