從模塊化到組件化再到插件化

從模塊化到組件化再到插件化
參考:

http://blog.xiaohansong.com/2015/10/21/IoC-and-DI/

http://blog.csdn.net/dd864140130/article/details/53645290

http://blog.csdn.net/smallspot/article/details/52221049

https://github.com/SpinyTech/ModularizationArchitecture

https://github.com/wutongke/ModularizationArchitecture

最近公司的項目從平臺開發(fā)專向了針對平臺開發(fā),對此眠砾,我們作為開發(fā)人員理應(yīng)當(dāng)開始設(shè)計新的思路去面對公司今后的戰(zhàn)略轉(zhuǎn)型玉雾。于是澎怒,我們就希望項目能定制化功能鸣个,通過后臺配置去加載相應(yīng)的模塊榛斯。為此看了一些相關(guān)內(nèi)容绊汹。

控制反轉(zhuǎn)磺箕,依賴注入:

耦合結(jié)構(gòu)和解耦結(jié)構(gòu)
目前我的項目的結(jié)構(gòu)如下圖所示奖慌,因為intent跳轉(zhuǎn)和一些數(shù)據(jù)共享的關(guān)系導(dǎo)致的。

解耦合之后的結(jié)構(gòu):

解耦思想
控制反轉(zhuǎn)是一種思想

依賴注入是一種設(shè)計模式

IoC框架使用依賴注入作為實現(xiàn)控制反轉(zhuǎn)的方式

模塊化開發(fā)
將一個程序按照其功能做拆分滞磺,分成相互獨(dú)立的模塊升薯,以便于每個模塊只包含與其功能相關(guān)的內(nèi)容。模塊我們相對熟悉,比如登錄功能可以是一個模塊,搜索功能可以是一個模塊,汽車的發(fā)送機(jī)也可是一個模塊击困。

組件式開發(fā)
基于可重用的目的涎劈,將一個大的軟件系統(tǒng)按照分離關(guān)注點(diǎn)的形式,拆分成多個獨(dú)立的組件阅茶,已較少耦合蛛枚。

將一個app分成多個模塊,每個模塊都是一個組件(Module)脸哀,開發(fā)的過程中我們可以讓這些組件相互依賴或者單獨(dú)調(diào)試部分組件等蹦浦,但是最終發(fā)布的時候是將這些組件合并統(tǒng)一成一個apk,這就是組件化開發(fā)撞蜂。

正常一個App中可以有多個module盲镶,但是一般只會有一個module是設(shè)置為application的,其他均設(shè)置為library蝌诡,組件化開發(fā)就是要每個module都可以運(yùn)行起來溉贿,因此在開發(fā)期間(Debug版本)每個module均設(shè)置為application,發(fā)布時(Release版本)設(shè)置為libs再進(jìn)行合并浦旱。

組件可以分為兩大類宇色,一類是application組件,一類是libs組件,application組件是一個可運(yùn)行的app宣蠕。libs組件可以作為application的依賴例隆,但是自身不可作為程序運(yùn)行的存在。

模塊化粒度更小,更側(cè)重于重用,而組件化粒度稍大于模塊,更側(cè)重于業(yè)務(wù)解耦抢蚀。

組件化想要解決的問題:

  1.   實際業(yè)務(wù)變化非扯撇悖快,但是工程之前的業(yè)務(wù)模塊耦合度太高,牽一發(fā)而動全身.
    
  2.   對工程所做的任何修改都必須要編譯整個工程
    
  3.   功能測試和系統(tǒng)測試每次都要進(jìn)行.
    
  4.   團(tuán)隊協(xié)同開發(fā)存在較多的沖突.不得不花費(fèi)更多的時間去溝通和協(xié)調(diào),并且在開發(fā)過程中,任何一位成員沒辦法專注于自己的功能點(diǎn),影響開發(fā)效率.
    
  5.   不能靈活的對工程進(jìn)行配置和組裝.比如今天產(chǎn)品經(jīng)理說加上這個功能,明天又說去掉,后天在加上.
    

組件開發(fā)比較常見的問題是業(yè)務(wù)組件的相互引用:

為此我們可以通過路由/總線的方式去處理:

掛載到組件總線上的業(yè)務(wù)組件,都可以實現(xiàn)雙向通信.而通信協(xié)議和HTTP通信協(xié)議類似,即基于URL的方式進(jìn)行.

插件化開發(fā)
Android應(yīng)用程序的.Java文件在編譯期會通過javac命令編譯成.class文件,最后再把所有的.class文件編譯成.dex文件放在.apk包里面皿曲。那么動態(tài)加載就是在運(yùn)行時把插件apk直接加載到classloader里面的技術(shù)鹿响。

關(guān)于代碼加載,系統(tǒng)提供了DexClassLoader來加載插件代碼谷饿。開發(fā)者可以對每一個插件分配一個DexClassLoader(這是目前最常見的一種方式),也可以動態(tài)得把插件加載到當(dāng)前運(yùn)行環(huán)境的classloader中妈倔。

相對于組件化開發(fā)主要要解決的問題:

  1.   宿主和插件分開編譯
    
  2.   并發(fā)開發(fā)
    
  3.   動態(tài)更新插件
    
  4.   按需下載模塊
    
  5.   方法數(shù)或變量數(shù)爆棚
    

這個坑有點(diǎn)多博投。

作者:huhanghao
來源:CSDN
原文:https://blog.csdn.net/u011486491/article/details/70216666
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接盯蝴!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末毅哗,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子捧挺,更是在濱河造成了極大的恐慌虑绵,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闽烙,死亡現(xiàn)場離奇詭異翅睛,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)黑竞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進(jìn)店門捕发,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人很魂,你說我怎么就攤上這事扎酷。” “怎么了遏匆?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵法挨,是天一觀的道長。 經(jīng)常有香客問我幅聘,道長凡纳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任喊暖,我火速辦了婚禮惫企,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己狞尔,他們只是感情好丛版,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著偏序,像睡著了一般页畦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上研儒,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天豫缨,我揣著相機(jī)與錄音,去河邊找鬼端朵。 笑死好芭,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的冲呢。 我是一名探鬼主播舍败,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼敬拓!你這毒婦竟也來了邻薯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤乘凸,失蹤者是張志新(化名)和其女友劉穎厕诡,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體营勤,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡灵嫌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了冀偶。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片醒第。...
    茶點(diǎn)故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖进鸠,靈堂內(nèi)的尸體忽然破棺而出稠曼,到底是詐尸還是另有隱情,我是刑警寧澤客年,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布霞幅,位于F島的核電站,受9級特大地震影響量瓜,放射性物質(zhì)發(fā)生泄漏司恳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一绍傲、第九天 我趴在偏房一處隱蔽的房頂上張望扔傅。 院中可真熱鬧耍共,春花似錦、人聲如沸猎塞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽荠耽。三九已至钩骇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間铝量,已是汗流浹背倘屹。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留慢叨,地道東北人纽匙。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像拍谐,于是被迫代替她去往敵國和親哄辣。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內(nèi)容