iOS組件化、模塊化

這篇文章主要談一下自己對模塊化和組件化的理解。

模塊化和組件化差別

很多時候模塊化、組件化會被大家認為是一個東西。其實我覺得他們是有很大差異的。
組件:按我理解是比較小的功能塊,他的拆分粒度相對模塊來說要細很多。
模塊:按我理解是比較大的功能塊,他的拆分粒度相對組件來說要大的多,尤其是一個工程非常龐大的時候,很多公司會拆分成各個業(yè)務線,每個業(yè)務線負責自己的模塊,最后把這些模塊集成到一個主工程中。

所以,我認為一個好的工程結構應該合理的對其進行模塊化,對于每個模塊合理的進行組件化。組件與組件間的交互通過面向對象就能很優(yōu)雅的處理好,那么模塊與模塊間又如何優(yōu)雅的進行交互呢?

模塊如何交互

模塊與模塊交互這個話題,網(wǎng)上討論最多的兩種方案:(注意,網(wǎng)上說的組件其實是我理解的模塊的意思,所以我用模塊來描述,這個是個人的小潔癖,細節(jié)決定成敗)

  1. 通過注冊url的方式實現(xiàn)模塊間交互,蘑菇街Limboy的模塊化方案
  2. 利用OC runtime的特性,實現(xiàn)模塊間交互,CASA的方案

關于這兩種方案的利弊有很多說法,仁者見仁智者見智,總之這兩種方案都是能抓到老鼠的好貓,如果你對模塊化還沒有一定的概念,大腦中沒有任何相關的構思,建議先去看看他們的文章,我這篇文章不會介紹具體的知識點,只記錄一下自己的理解。

關于這兩種方案的總結,我推薦一篇文章給大家,介紹的非常到位,思路清晰,bang神對兩種方案的總結與理解,值得看一看

那么針對這兩種方案,我個人是偏向CASA的方案的,原因和bang神的看法也大體一致。其實CASA的方案也很簡單,就是利用了OC特性,通過runtime,動態(tài)的從一個模塊往另外一個模塊調用,而不是import的方式去調用。為了避免每一個調用的地方都重復的寫這種動態(tài)的調用代碼,CASA對這種重復性代碼進行了優(yōu)化,只要大家遵循一定的規(guī)則,那么這種重復性的代碼就可以抽取出來了,target-action方案也由此誕生。
CASA的方案CTMediator源碼和demo也很簡單,建議大家看一看。demo很好的演示了調用流程。
不過個人認為demo中沒有很好的展示出mediator中間件由誰來負責開發(fā)和維護,于是我建了一個例子,做簡要說明,仔細關注一下一下圖的文字闡述。

模塊交互職責簡圖

最后雙手附上demo

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容