組件化、模組化、外掛程式化

來源:互聯網
上載者:User

標籤:統一   library   搜尋功能   外掛程式   開發人員   其他   ext   版本   成員   

模組化

模組化開發
將一個程式按照其功能做拆分,分成相互獨立的模組,以便於每個模組只包含與其功能相關的內容。模組我們相對熟悉,比如登入功能可以是一個模組,搜尋功能可以是一個模組,汽車的發送機也可是一個模組。

 

組件式開發
基於可重用的目的,將一個大的軟體系統按照分離關注點的形式,拆分成多個獨立的組件,已較少耦合。

將一個app分成多個模組,每個模組都是一個組件(Module),開發的過程中我們可以讓這些組件相互依賴或者單獨調試部分組件等,但是最終發布的時候是將這些組件合并統一成一個apk,這就是組件化開發。

正常一個App中可以有多個module,但是一般只會有一個module是設定為application的,其他均設定為library,組件化開發就是要每個module都可以運行起來,因此在開發期間(Debug版本)每個module均設定為application,發布時(Release版本)設定為libs再進行合并。

組件可以分為兩大類,一類是application組件,一類是libs組件,application組件是一個可啟動並執行app。libs組件可以作為application的依賴,但是自身不可作為程式啟動並執行存在。

模組化粒度更小,更側重於重用,而組件化粒度稍大於模組,更側重於業務解耦。

組件化想要解決的問題:

1.       實際業務變化非常快,但是工程之前的業務模組耦合度太高,牽一髮而動全身.

2.       對工程所做的任何修改都必須要編譯整個工程

3.       功能測試和系統測試每次都要進行.

4.       團隊協同開發存在較多的衝突.不得不花費更多的時間去溝通和協調,並且在開發過程中,任何一位成員沒辦法專註於自己的功能點,影響開發效率.

5.       不能靈活的對工程進行配置和組裝.比如今天產品經理說加上這個功能,明天又說去掉,後天在加上.

組件開發比較常見的問題是業務組件的相互引用:

 

為此我們可以通過路由/匯流排的方式去處理:

 

掛載到組件匯流排上的業務組件,都可以實現雙向通訊.而通訊協定和HTTP通訊協定類似,即基於URL的方式進行.

 

外掛程式化開發
Android應用程式的.Java檔案在編譯期會通過javac命令編譯成.class檔案,最後再把所有的.class檔案編譯成.dex檔案放在.apk包裡面。那麼動態載入就是在運行時把外掛程式apk直接載入到classloader裡面的技術。

關於代碼載入,系統提供了DexClassLoader來載入外掛程式代碼。開發人員可以對每一個外掛程式分配一個DexClassLoader(這是目前最常見的一種方式),也可以動態得把外掛程式載入到當前運行環境的classloader中。

相對於組件化開發主要要解決的問題:

1.       宿主和外掛程式分開編譯

2.       並發開發

3.       動態更新外掛程式

4.       按需下載模組

5.       方法數或變數數爆棚
---------------------
huhanghao
來源:CSDN
原文:70216666

組件化、模組化、外掛程式化

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.