移動客戶端業務層組件化(3)- 我們的方案iOS篇

整體架構圖:

ios-modulerize.jpeg

架構場景分析:

場景1:A組件內部VC互相調用:
直接實例化ViewController然后Push or Present即可

場景2:A組件的VC1調用B組件的VC2

  1. B組件向外暴露出Target和Action
  2. B組件向GMediator中注冊對應的Category,然后在Category中注冊被調用Target-Action的方法,如:Target_B類中的fetchVC2方法
  3. A組件調用GMediator中B組件注冊的Target-Action,拿到對應的VC2實例
  4. A組件對VC2實例執行Push或Present操作

場景3:外部應用通過URL調用B組件的VC2

  1. B組件向外暴露出Target和Action
  2. B組件向GMediator中注冊對應的Category,然后在Category中注冊被調用Target-Action的方法,如:Target_B類中的fetchVC2方法
  3. App初始化GMediator,并傳入一個路由表(包含處理某協議的組件Target名和對應的Action和Host的映射關系)
  4. 外部應用訪問URL Scheme, AppDelegate通過openURL或didReceiveRemoteNotification拿到URL后,調用GMediator的performActionWithUrl
  5. GMediator將URL解析成Target和Action,通過回調將VC2返回給AppDelegate
  6. AppDelegate拿到VC2實例后,直接通過
    [AppDelegate shareInstance].selectedNavigationController.visibleViewController
    Push或Present

場景4:A組件里的H5通過URL調用B組件的VC2

  1. B組件向外暴露出Target和Action
  2. B組件向GMediator中注冊對應的Category,然后在Category中注冊被調用Target-Action的方法,如:Target_B類中的fetchVC2方法
  3. H5頁面應用調用URL Scheme,WebViewVC調用GMediator的performActionWithUrl
  4. GMediator將URL解析成Target和Action,通過回調將VC2返回給WebViewVC
  5. WebViewVC拿到VC2實例后,Push或Present

場景5:A組件里的H5通過URL調用A組件里的VC1
同場景4

場景6:A組件的VC1調用B組件的VC2,并需要拿到VC2的業務處理結果
同場景2,處理結果通過傳入一個Block來實現。

注意事項:

原則上對于每個業務組件的Mediator Category,需要單獨建立一個Pod來管理(由該組件的負責人維護),避免一個業務接口升級時,影響其它業務。

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

推薦閱讀更多精彩內容