組件化、模塊化、插件化

模塊化java

模塊化開發
將一個程序按照其功能作拆分,分紅相互獨立的模塊,以便於每一個模塊只包含與其功能相關的內容。模塊咱們相對熟悉,好比登陸功能能夠是一個模塊,搜索功能能夠是一個模塊,汽車的發送機也但是一個模塊。併發

 

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

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

正常一個App中能夠有多個module,可是通常只會有一個module是設置爲application的,其餘均設置爲library,組件化開發就是要每一個module均可以運行起來,所以在開發期間(Debug版本)每一個module均設置爲application,發佈時(Release版本)設置爲libs再進行合併。組件化

組件能夠分爲兩大類,一類是application組件,一類是libs組件,application組件是一個可運行的app。libs組件能夠做爲application的依賴,可是自身不可做爲程序運行的存在。測試

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

組件化想要解決的問題:插件

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 原文:https://blog.csdn.net/u011486491/article/details/70216666

相關文章
相關標籤/搜索