軟件設計與開發中經常會有一個【侵入性】的概念,對整體框架影響重大。
1.軟件設計的標准是【高內聚,低耦合】。侵入性強實際上指的就是耦合太強了。判斷的標准就是當引入了這個組件導致其它代碼或者設計要做相應的更改以適應新組件。這樣的情況我們就認為這個新組件具有侵入性。
2.侵入性具體表現為用戶代碼需要繼承框架提供的類。 非侵入性則不需要用戶代碼引入框架代碼的信息,從類的編寫者角度來看,察覺不到框架的存在。
3.開發程序的同時,引進的框架。如果在使用該框架時,要繼承框架提供的實體類或實現框架提供的接口,這就說明該框架是侵入性框架,因為程序本身對框架有了依賴,當去除框架時,程序也就無法運行,這個也就是我們說的重量級框架,如struts1中,action和actionForm必須要繼承Action和ActionForm一樣。相反的非侵入性框架是輕量級框架的重要特點,如hibernate和spring,當我們想去掉hibernate和spring框架時,只需修改相應的程序,程序仍可運行。
4.侵入性讓用戶代碼產生對框架的依賴,這些代碼不能在框架外使用,不利於代碼的復用(缺點)。但侵入性可以使用戶跟框架更好的結合,更容易更充分的利用框架提供的功能(優點)。 非侵入性的代碼則沒有過多的依賴,可以很方便的遷移到其他地方。但是與用戶代碼互動的方式可能就比較復雜。 這兩種方式都有各自的利弊,主要看實際開發時怎么選擇了。
簡單理解就是,在你的系統中去除掉某個【部分】,如果系統整體已經不能正常運行了,那么這個【部分】就是侵入式的;而如果系統整體仍然能夠正常運行,那么這個【部分】就是非侵入式的。
"眼界決定境界。"