iOS 網路引擎設計
最近把專案中的老的網路請求程式碼梳理了一下,並基於中介者模式重寫了一個新的網路引擎,解決老的程式碼臃腫和難以擴充套件的問題,而且程式碼職責更加清晰, 降低了耦合 。
網路引擎的功能
1.網路請求排程中心
2.管理所有請求 通過陣列快取失敗的請求
3.取消某個請求
4.監控網路
5.其他功能可自行擴充套件 很方便
UML圖
不多說先看UML圖。切記先看UML圖 普通的箭頭是引用 實心三角形箭頭是類繼承 空心三角形是介面繼承(協議繼承)。

網路引擎UML.png
對照UML圖看類功能:
EMNetworkingManager
EMNetworkingManager 網路請求管理器,所有的網路請求 一定會走這個類,整理網路請求的所有操作都在這個類中統一排程,他相當於中介者模式中的中介者,而三個單例類:EMNetworkingRequest,EMNetworkingBusinessHandle,EMNetworkingUIHandle 則屬於同事角色,他們之間沒有耦合。
EMNetworkingRequest
當EMNetworkingManager 進行請求(或者監控網路)的時候,就會呼叫EMNetworkingRequest中的網路請求方法,EMNetworkingRequest中僅僅引用了AFNetworking,製作簡單的網路請求。
EMNetworkingBusinessHandle
當EMNetworkingManager 需要處理網路結果對應的客戶端自定義的業務時候,就會使用EMNetworkingBusinessHandle,進行處理,這個類是和我們的業務掛鉤。
EMNetworkingUIHandle
當EMNetworkingManager 需要處理網路中UI的展示的時候,就會使用EMNetworkingUIHandle,進行處理,這個類是和我們的設計的UI關聯的。
操作物件:
EMOperationObj普通的GET POST請求 使用這個物件進行組織引數和相關資訊就夠用了, 這個類也是EMNetworkingManager 中的核心,所以相關的操作都會涉及到這個類。
EMUploadImageOperationObj繼承於EMOperationObj,當需要上傳單張圖片或者多張圖片的時候使用。
EMRecordingOperationObj繼承於EMOperationObj,當需要上傳錄音的時候使用。
響應物件:
EMNetworkingResponseObj:
只要是想要使用返回的資料:EMNetworkingResponseObj 這個類就夠用了。
由於GET請求返回的資料可能是字典,也可能直接就是data,所以定義了兩個欄位:
/
@property (nonatomic, strong) id responseDataOnGet; /
<zs20181114 Get 請求的時候 返回的資料 */此文件只是說下思想,具體API Demo中有詳細的描述。
Demo地址 : ofollow,noindex">https://github.com/zhiyoukaifa/NetworkEngines
參考連結(中介者模式): https://www.jianshu.com/p/7f47103b202b