APP 組件化開發(fā)

基于業(yè)務(wù)邏輯,多個 APP 會調(diào)用同一模塊,例如預(yù)約掛號、醫(yī)社保查詢等,組件化能夠更好的實(shí)現(xiàn)跨App的代碼和功能的復(fù)用, 能夠更好的共享資源,避免重復(fù)造輪子。

而組件化將來必定會出現(xiàn)有多個模塊,模塊之間會通信,互相調(diào)用的情況。


問題1:各模塊互相依賴

如何避免相互依賴,實(shí)現(xiàn)模塊組件獨(dú)立開發(fā)與維護(hù)?



Mediator模式,即中間件模式

各個模塊直接都不需要再互相依賴,而是僅需要依賴 Mediator 層即可。但是,依賴關(guān)系并沒有解除,Mediator 依賴了所有模塊,而調(diào)用者又依賴 Mediator。


采用動態(tài)調(diào)用方式,去掉依賴

組件僅通過Target-Action暴露可調(diào)用接口

iOS基于runtime,Android基于發(fā)射機(jī)制實(shí)現(xiàn)動態(tài)調(diào)用

每個組件部分


Mediator : 封裝動態(tài)調(diào)用的實(shí)現(xiàn)邏輯,也相當(dāng)于一個基礎(chǔ)組件。而各個業(yè)務(wù)組件,不需要知道Mediator的存在。只有在集成的時候才需要Mediator,實(shí)際上這可以只是一個類文件。

對于使用URL方式其他第三方APP調(diào)用組件的,也可以經(jīng)過URL參數(shù)轉(zhuǎn)換之后,使用本地APP調(diào)用組件的方式。

- ?組件化方案中的去model設(shè)計(jì)

調(diào)用方如何知道接收方需要哪些key的參數(shù)?調(diào)用方如何知道有哪些target可以被調(diào)用?

每個組件,重載Mediator,封裝好對外提供的接口。(Objective-C 的分類,Java 的繼承)

-?動態(tài)調(diào)度考慮

切點(diǎn):

以url parse為切點(diǎn)

以實(shí)例化target時為切點(diǎn)

以category調(diào)度方法為切點(diǎn)

以target下的action為切點(diǎn)

從服務(wù)端獲取target-action配置列表,審查時檢查當(dāng)前action是否存在要被動態(tài)調(diào)度跳轉(zhuǎn)的action,如果存在,則跳轉(zhuǎn)到新的target-action


參考:iOS應(yīng)用架構(gòu)談 組件化方案??

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

友情鏈接更多精彩內(nèi)容