加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

对依赖注入,控制反转,反射的理解

发布时间:2020-12-14 02:11:54 所属栏目:百科 来源:网络整理
导读:依赖反转 原则 : 设计模式中,为了遵循开闭原则,降低类与类之间的依赖关系,又设计了 依赖反转 原则: 高层不应该依赖于低层,两者都应该依赖于抽象; 抽象不依赖于具象,具象依赖于抽象。 理解 :如一个项目中,高层的控制逻辑直接依赖于低层的数据库(sq
依赖反转原则
设计模式中,为了遵循开闭原则,降低类与类之间的依赖关系,又设计了依赖反转原则:
高层不应该依赖于低层,两者都应该依赖于抽象;
抽象不依赖于具象,具象依赖于抽象。
理解:如一个项目中,高层的控制逻辑直接依赖于低层的数据库(sql),直接在逻辑类中创建数据库的对象,就形成了对数据库的紧密的依赖。那么如果用户需要换数据库(access),且高层逻辑完全不变,则更换数据库时,不仅要添加扩展代码,还要修改源码。但破坏开闭原则,不易维库不易扩展不易复用不灵活吧啦吧啦。所以应该将数据库设计个高层的抽象,即抽象类或是接口,高层依赖于抽象,根据需要从接口处创建需要的对象,低层sql和access都需要实现接口。这样添加access的时候,只需要扩展,不修改原来的代码即可。

反射:不用new来创建对象,而是用类加载器,根据字符串名创建类,创建类的权利转移了,不是调用者new而是交给了IoC(inversionofcontrol)控制容器来创建,是实现控制反转的关键技术。在java中,用Assembly.Load(集合名).CreateInstance(集合名.类名)来实现反射,对象是由IoC容器根据类加载器创建的。对象不是预先创建编译好,而是使用时动态创建。

控制反转:利用反射技术,将对象创建权利转移给容器,一般结合配置文件,读取根据配置文件创建对象,省去了用来判断创建哪个对象的switch和if语句。

依赖注入:依赖注入也是实现控制反转的一个技术,其实我们在项目中也经常用到,即对象的实例化由别的类注入,可以是容器创建了然后注入,也可以是另外的类中创建后注入,不是自己创建,也是将控制权转自给了别人。可以用构造函数也可以用set函数,如: publicclassLogic{ myDataBasedb; publicLogic(myDataBasemdb){ db=mdb; } 或 publicvoidsetMyDatabase(myDataBasemdb){ db=mdb; } ...... } 参数是实例化后的对象,不是自己new的,称为依赖注入。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读