原文地址:html
https://casatwy.com/iOS-Modulization.html安全
下面是對做者的思想的一些總結,不表明咱們本身的組件化也要這麼作(或者這麼作,或者不這麼作),咱們本身的組件化還須要在實踐中不斷完善,這裏先理解清楚做者的意圖。架構
遠程調用和本地調用分開
遠程調用就是app外部調用app的某個模塊
本地調用就是app內部模塊間的相互調用app
理由是:組件化
- 遠程App調用處理入參的過程比本地多了一個URL解析的過程,這是遠程App調用特有的過程
- 對於無響應請求的處理方式:遠程和本地可能不同,因此要分開。若是都採用一樣的方式,對於本地調用無響應的結果,極可能產品經理會不一樣意展現一個404頁面,而致使架構改變,而加班。
不使用URL註冊,使用runtime機制便可,不維護註冊列表
使用openURL的方式實現組件化是錯誤的
理由是:openURL的方式沒法傳遞很是規參數。url
組件化方案中的去model設計
參數最好以字典的方式去傳遞
實現方式:設計
- CTMediator 提供轉發的基礎服務
- CTMediator+CTMediatorModuleAActions 提供和模塊A有關係的全部調起
- Target_A提供具體要執行方法
- 調用模塊依賴被調用模塊的Category,例如想要調起A模塊的頁面,要依賴CTMediator+CTMediatorModuleAActions。
- category中定義的具體方法,限制了傳參,能夠保證只有知足正確的參數,才能夠被執行。
一些安全措施
如何防止別人經過url調用本地頁面:遠程調用和本地調用分開後,這個問題就好解決了,採用給action添加native前綴去作的,凡是帶有native前綴的就都只容許本地組件調用。htm