組件化(一)組件化簡介(基礎概念)

一、概念

將一個單一工程的項目,分解成各個獨立的組件;
然后按照某種方式 任意組成一個擁有完整業(yè)務邏輯的工程

可以理解為下圖所示


E9AE92823AAF075D980F8D66B6981697.png

每個組件都可以單獨抽離出來獨立運行
這就是組件的概念

二、組件化產生的原因

如果你的項目 業(yè)務模塊比較多 而且同時有很多人開發(fā) 在開發(fā)過程中肯定會出現(xiàn)一些問題 比如

1、代碼耦合度很高
//團隊成員 方法相互引用

2、編譯效率低速度慢 
//因為工程模塊比較多編譯時每個模塊都會參與

3、測試不獨立
//你寫的代碼測出來問題 有可能不是你的問題 可能是其他開發(fā)人員的問題導致(測試環(huán)境復雜)

4、無法使用自己擅長的設計模式
//一個項目多人開發(fā) 如果所有代碼都在一起 肯定會有一個統(tǒng)一的設計模式  不然項目會很亂 

。。。。

反正就是 項目業(yè)務比較復雜時 多人開發(fā)會暴露出一系列的問題。
此時 如果每個人都負責編寫一個獨立的組件 就不會出現(xiàn)上述問題

三、組件化最終效果

1、組件獨立

獨立編寫 :可以使用自己擅長的方式別寫代碼
獨立編譯 :速度快
獨立運行 :速度快
獨立測試 :定位問題快 省去重復測試

2、一次封裝永久使用

如果你的其他項目中想要使用這個組件 直接引用即可

四、組件化實戰(zhàn)考慮的問題

1、需要把哪些內容封裝成一個組件

一般分為三種 基礎組件、功能組件、業(yè)務組件

基礎組件
1、基本配置:如常量/變量、宏定義
2、分類:系統(tǒng)各個類的分類
3、網絡:如對AFN的封裝、對SDWebImage的封裝...
4、工具:如 日期處理工具、文件處理工具、設備信息獲取工具...
...
功能組件
1、控件:如 輪播器、選項菜單、圖文菜單、彈幕...
2、功能:如 斷點續(xù)傳、音頻處理
...
業(yè)務組件
1、業(yè)務1
2、業(yè)務2
3、業(yè)務3
...
n、業(yè)務n

三者之間的關系
先看圖


5894832B47D6ADE4C667E6221F9CD0CE.png
1、最上層肯定是業(yè)務組件 ,然后基礎組件和功能組件同一級別
2、業(yè)務組件 可以依賴基礎組件 也可以依賴 功能組件
3、業(yè)務組件之間最好不要相互依賴 
原因是:降低業(yè)務組件之間的依賴 能夠方便的抽離出 各個組件  來達到解耦的目的
4、基礎組件和功能組件 最好也不要相互依賴 
原因是:降低業(yè)務組件之間的依賴 能夠方便的抽離出 各個組件  來達到解耦的目的

假設 功能組件  有一個小小的功能需要使用 基礎組件 那么他就需要去依賴(引用) 基礎組件
這樣一搞 在編譯的時候就會把基礎組件的所有小的組件給引用到功能組件中 
在編譯的時候基礎組件就會全部被編譯

還有就是 功能組件依賴基礎組件 將來再抽離功能組件的時候就無法單獨把功能組件抽離出來

解決這個問題  就是把功能組件里需要的基礎功能 從基礎組件中拷貝一份過來,雖然這樣麻煩了一些 但是能夠達到解耦的效果。

2、每個組件以什么樣的形式存在

1、組件內部根據(jù)個人喜好劃分命名文件夾
2、每個組件都以pod庫的形式存在
3、擁有單獨的測試工程 每個組件可以單獨測試

3、以怎樣的形式集成各個組件

通過cocoapods來安轉各個組件

4、組件之間如何通訊

1、披露公開API
2、利用中間件 傳遞

五、組件化過程中的解耦

1、如果一個組件中依賴其他公共功能 該如何處理

1、直接copy代碼,雖然麻煩,但是他的好處就是快,無需產生依賴,
對于一些不重要的方法和工具也可以直接copy到內部使用

2、把組件依賴的代碼 封裝成一個pod庫 然后依賴pod庫

2、組件內部需要對接某個服務 該如何處理

如:圖文菜單組件的封裝 內部有圖文加載
可以使用一個代理 或則block 把顯示圖片的代碼丟出去 讓外界來做處理
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 目錄介紹 1.0.0.1 說下Activity的生命周期?屏幕旋轉時生命周期?異常條件會調用什么方法? 1.0.0...
    楊充211閱讀 620評論 0 2
  • 組件:指的是單一的功能組件,如視頻組件(VideoSDK)、支付組件(PaySDK)、路由組件(Router)等。...
    秀葉寒冬閱讀 286評論 0 4
  • 原文地址:iOS 組件化方案 摘要:最近在思考團隊擴張及項目數(shù)量增加的情況下,如何持續(xù)保障團隊高效產出的問題,很自...
    prettystony閱讀 204評論 0 0
  • 去年就開始做組件化,沒啥活,就自己找的活兒,一套視頻看下來,理論知識有了,但是對著自家的項目,卻還是無從下手,所以...
    小如99閱讀 437評論 0 1
  • (一)概念 將一個單一工程的項目,分解成為各個獨立的組件,然后按照某種方式,任意組織成一個擁有完整業(yè)務邏輯的工具 ...
    沈正方閱讀 598評論 0 1