侵入式(引入或繼承了別的包或者框架)
表面的理解是:你的代碼裏已經嵌入了別的代碼,這些代碼可能是你引入過的框架,也可能是你通過接口繼承得來的,這樣你就可以擁有侵入代碼的一些功能。所以我們就稱這段代碼是侵入式代碼。侵入式讓用戶代碼產生對框架的依賴,這些代碼不能在框架外使用,不利於代碼的複用。
侵入時代碼的優點:侵入式可以使用戶跟框架更好的結合,更容易更充分的利用框架提供的功能。
缺點:框架外代碼就不能使用了,不利於代碼複用。依賴太多重構代碼很難。
非侵入式(沒有依賴,自主研發)
與侵入式相反,你的代碼沒有引入別的包或框架,完完全全是自主開發。
優點:代碼可複用,方便移植。非侵入式的代碼則沒有過多的依賴,可以很方便的遷移到其他地方。
缺點:但是與用戶代碼互動的方式可能就比較複雜。
非侵入式也體現了代碼的設計原則:高內聚,低耦合
非侵入式和侵入式的比較:
非侵入式設計:一個客戶端的代碼可能包含框架功能和客戶端自己的功能。
侵入式設計:就是設計者將框架功能“推”給客戶端,而非侵入式設計,則是設計者將客戶端的功能“拿”到框架中用。
侵入式設計有時候表現爲客戶端需要繼承框架中的類,而非侵入式設計則表現爲客戶端實現框架提供的接口。
侵入式設計帶來的最大缺陷是,當你決定重構你的代碼時,發現之前寫過的代碼只能扔掉。而非侵入式設計則不然,之前寫過的代碼仍有價值。