以前虽然知道控制反转,但是一直对反转的概念很模糊,怎么就反转了,反转了什么,最近在搭业务架构,想用些好的设计模式,来实现更好的解耦和扩展性,无意间看到一篇文章把控制反转 IoC
说的这么好理解,顿时茅塞顿开🐶。
代码(Inversion of Control)
1 | class Bim |
理解
首先声明一点,我也看过很多文章会把依赖注入(DI)和控制反转(IoC)一起说,因为想要实现控制反转需要依赖注入,这里只说下控制反转,对依赖注入不了解的可以自行 Google。
本身 Foo
类可以控制自身对象的行为(doSomething),但是具体行为依赖最底层的 Bim
类 doSomething
方法,也就是说上层代码不变的情况下,通过替换底层依赖的对象,可以改变上层代码的行为,这就是所谓的 控制反转
了
例如:例如Foo类用到了memcached,可以在不修改Foo类代码的情况下,改用redis。
当然我理解还有一层反转,就需要提到 容器
。依赖注入需要的对象由类本身转移到了容器上,而容器中保存的上层类需要依赖的对象,这些的对象都要实现需要注入对象的接口,这就对应上在改变上层代码的情况下,通过注入不同依赖对象去改变上层类的行为。[说的感觉有点啰嗦,都是大白话,剩在好理解🐶]