iOS中一種網路層與業務層的設計方案

2021-07-05 11:06:26 字數 958 閱讀 8459

提起ios架構,免不了要談到現在很火的mvvm和mvcs,但萬變不離其宗,這兩個概念其實也都基於mvc,它們的主要思想簡而言之就是mvc中的c-controller裡面的**太多,在專案不斷新增功能逐漸變大時,不利於開發也不利於維護.

.xbbusinessmanager**戳這裡

僅僅舉例個人入行兩年來所經歷的例項.

很早以前的**可能是這樣的:

估計現在很多公司正在使用的**:

情形二相對於情形一的區別就是在原始的第三方網路庫(eg.afnetworking)基礎上做了一層封裝,這樣在一定程度上降低了第三方庫和專案之間的耦合度.但這樣控制器仍可算的上是直接和網路層在進行互動.

xbbusinessmanager代表整個專案的業務層,控制器只需要根據業務型別傳入業務對應的action及引數,網路請求成功伺服器返回資料後便會通知`xbbusinessmanagerdelegate「.

『xbbusinessmanager』是業務層,而網路層則通過xbbasehttprequesthelper類實現,這個類才是具體負責跟第三方網路庫打交道,具體實現請檢視原始碼.

具體請求後獲取資料需實現xbbusinessdelegate協議,協議內包含四個方法,分別表示獲取資料成功,獲取資料失敗,網路斷開,和使用蜂窩資料四種情況.之所以只使用delegate的方式,是因為曾經維護過的乙個老專案中匯出都是block呼叫,可追蹤性太差,維護起來簡直頭大.單一的方式可以提供更好的可維護性.block確實使用十分方便,但濫用的後果也十分嚴重.個人也有乙個簡單的開源庫使用了block,如果在該專案中使用delegate的話有興趣的可以試試.**位址戳這裡xbsettingcontroller.

xbbusinessmanager只是個人的一點小想法,寫的比較簡單,更多細節請檢視原始碼,由於水平有限,期待與各位同仁就更多好的開發方式方法進行**.

另一種MTK特效製作的方法,層複製

對於mtk平台來說,選單和螢幕特效曾經在很長的一段時間裡,影響甚遠。但對於其設計過程和方法,由於各種各樣的原因,很少有人提及。這裡介紹一種不同於前幾天日誌所載之方法的另一種方法,就是合併圖層,其核心實現函式如下。void my gdi layer copy gdi layer struct dst ...

MVC是一種用於表示層設計的復合設計模式

它們之間的互動有以下幾種 1.當使用者在檢視上做任何需要呼叫模型的操作時,它的請求將被控制器截獲。2.控制器按照自身指定的策略,將使用者行為翻譯成模型操作,呼叫模型相應邏輯實現。3.控制器可能會在接到檢視操作時,指定檢視做某些改變。4.當模型的狀態發生改變時,將通過某種方式通知檢視。5.檢視可以從模...

MVC是一種用於表示層設計的復合設計模式

mvc是一種用於表示層設計的復合設計模式。m v c分別表示模型 model view 檢視 controller 控制器 它們的職責如下 在mvc中,檢視是觀察者,模型是被觀察者,當模型狀態改變時,呼叫所有觀察者的update方法,通知檢視模型有變,檢視在update方法裡寫下響應 完成操作。通過...