假設大家都想要把用戶代碼塞到一個框架里。兩者區別就出來了: 侵入式的做法就是要求用戶代碼“知道”框架的代碼,表現為用戶代碼需要繼承框架提供的類。 非侵入式則不需要用戶代碼引入框架代碼的信息,從類的編寫者角度來看,察覺不到框架的存在。 舉個栗子: 使用struts時,需要繼承一些struts的類,這時struts侵入到了我的代碼里。 使用spring時,編寫一些業務類的時候不需要繼承spring特定的類,通過配置完成依賴注入后就可以使用,此時,spring就沒有侵入到我業務類的代碼里。 世界上每一個物體的存在,必有其過人之處,但是人無完人,不可能存在永遠完美的東西存在,其也會受到時代潮流的影響: 侵入式讓用戶代碼產生對框架的依賴,這些代碼不能在框架外使用,不利於代碼的復用(缺點)。但侵入式可以使用戶跟框架更好的結合,更容易更充分的利用框架提供的功能(優點)。 非侵入式的代碼則沒有過多的依賴,可以很方便的遷移到其他地方。但是與用戶代碼互動的方式可能就比較復雜。 這兩種方式都有各自的利弊,主要看實際開發時怎么選擇他了。