1.软件设计的标准是"高内聚,低耦合"。侵入性强指的是耦合太强了。判断的标准就是当引入了这个组件导致其它代码或者设计要做相应的更改以适应新组件。这样的情况我们就认为这个新组件具有侵入性。
2.侵入性表现为用户代码需要继承框架提供的类。 非侵入性则不需要用户代码引入框架代码的信息,从类的编写者角度来看,察觉不到框架的存在。
3.开发程序的同时,引进的框架。如果在使用该框架时,要继承框架提供的实体类或实现框架提供的接口,这就说明该框架是侵入性框架,因为程序本身对框架有了依赖,当去除框架时,程序也就无法运行,这个也就是我们说的重量级框架,如struts1中,action和actionForm必须要继承Action和ActionForm一样。相反的非侵入性框架是轻量级框架的重要特点,如hibernate和spring,当我们想去掉hibernate和spring框架时,只需修改相应的程序,程序仍可运行。
4.侵入性让用户代码产生对框架的依赖,这些代码不能在框架外使用,不利于代码的复用(缺点)。但侵入性可以使用户跟框架更好的结合,更容易更充分的利用框架提供的功能(优点)。 非侵入性的代码则没有过多的依赖,可以很方便的迁移到其他地方。但是与用户代码互动的方式可能就比较复杂。 这两种方式都有各自的利弊,主要看实际开发时怎么选择了。
欢迎大家积极留言交流学习心得,点赞的人最美丽,谢谢