spiny方案 vs 接口方案
我們先看看這個spiny框架的思想和使用,先看下圖:
模塊化分組的時候恶导,它其實是在我們之前那種分組的基礎(chǔ)上崭篡,加上一個module挪哄,Router,這里就是注冊模塊琉闪,所有需要公共出來的方法迹炼、參數(shù)、函數(shù)等信息都需要注冊到這個模塊中颠毙,使用方需要在這個module中找到注冊信息斯入,然后再去找到相對應(yīng)的實現(xiàn)中去。
然后看一下另外的我們之前的方案的圖
這個spiny方案蛀蜜,所有module依賴的只有router刻两,module之間的互相依賴都沒有了。
到此為止滴某,我們來比較一下這兩個方案吧磅摹!
大家看之前方案的優(yōu)缺點:
- 依賴接口,弱解耦
- 沒有動態(tài)性
- 接口依賴霎奢,編譯器檢查
- 原生接口户誓,學(xué)習(xí)開發(fā)障礙小
前面也說過了,spiny方案要比接口方案耦合度更低幕侠。接口方案缺少動態(tài)性帝美,而spinny這里面,只要我們注冊的provider和action名字不變晤硕,里面如何改動悼潭,我們都可以不用管,這樣是不是有點url方案的感覺窗骑。
但是呢女责?大家可以看一下spiny使用漆枚,我了個大擦创译,是不是炒雞無敵麻煩?而且雖然代碼都是原生墙基,大家學(xué)起來不麻煩软族,但是如果項目子module多刷喜,互相之間都要調(diào)用,這豈不是一個很巨大的工程立砸?
這樣看起來掖疮,spiny和接口方案可以說是五五開吧!
新鮮出爐的Loner Modularization
因為剛自己寫了一個簡單的框架颗祝,名字還沒想好浊闪,就暫時用我的名字來命名吧!我這個方案思路其實就是在spinny基礎(chǔ)上螺戳,簡化它的注冊和使用流程搁宾。那怎么簡化呢?
大家都知道apt吧倔幼,那其實那么多繁瑣的注冊過程盖腿,我們可不可以使用apt來動態(tài)生成呢?當(dāng)然可以损同!
那大家會問翩腐,如果調(diào)用的話,怎么辦膏燃?
注冊時候茂卦,我們把包名、類名组哩,都保存起來疙筹,使用的時候,我們用反射的方法不就可以使用了嗎禁炒?
這樣的話而咆,我們比接口方案的優(yōu)勢就明顯了,唯一的一個缺點就是
- 接口依賴幕袱,編譯器檢查
這個問題暴备,如果提供方改掉方法的話,使用放在編譯期間是檢測不到的们豌。解決方法也是有的涯捻,就像我們項目中的接口module,里面的接口中的方法只能遞增添加望迎,不能改變障癌。那我們也在Loner中定義,所有提供方的方法辩尊,只能遞增增加涛浙,不能改變。
git地址:
LonerModularization
代碼還沒完善,也沒傳到j(luò)center上轿亮,后面會慢慢完善疮薇。