扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
对于IOC(Inversion of Control),很多人有不同的见解,这相当于“一千人心中有一千个哈姆雷特”,其实说来说去总是离不开“控制反转”和“依赖注入”。不要把IOC当成一种什么的很高深的技术,它只是一种概念,告诉你Spring针对程序解耦的实现方法。
成都创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于网站设计制作、成都网站建设、富平网络推广、成都微信小程序、富平网络营销、富平企业策划、富平品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们大的嘉奖;成都创新互联公司为所有大学生创业者提供富平建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com首先我们来详细说一下什么叫“控制反转”,分解为两个关键词:控制和反转
①传统的JavaSE中我们如果在一个对象引入其他对象,习惯用new,这样我们就可以用这个对象资源,而IOC则是将对象创建其他对象的控制权收到自己手中,当对象需要引用其他对象时,不需要我们new,IOC容器会为你创建,即将对象新建的控制拿在手里。
②所谓new对象是属于主动的行为,那么被动的获取对象就属于被动行为,从我们自己主动创建依赖对象到由容器控制创建以及注入依赖对象,就是一种反转。
下面图片很好的反应了这个过程:
当引入IOC容器后,用户不需要去创建这些类:
知道IOC原理以后,我们需要知道Spring 的IOC带给我们怎么样的变化:
实现组件之间的解耦,提高程序的灵活性和可维护性。
但是同时:
1、创建对象的步骤变复杂了,不直观,当然这是对不习惯这种方式的人来说的。
2、因为使用反射来创建对象,所以在效率上会有些损耗。但相对于程序的灵活性和可维护性来说,这点损耗是微不足道的。
3、缺少IDE重构的支持,如果修改了类名,还需到XML文件中手动修改,这似乎是所有XML方式的缺憾所在。
其次,我们来说一下“依赖注入”(DI)。
依赖注入其实与控制反转是从不同角度来说明IOC概念,两个对象之间的依赖关系在程序运行时由外部容器动态的注入依赖行为方式称为依赖注入 (DI) 。
①如果类A需要运用类B的方法或者属性,通俗的说他们之前存在依赖关系。
②当A运行时,IOC容器会将类B注入到A中,A不需要知道B什么时候创建以及怎么构造的。
对于IOC,我们只要明白"控制反转"以及"依赖注入"中的每个字的含义就行了,它代表的只是一种设计原理,并非那么高深。
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流