控制反转依赖倒置通俗解释

比如你是餐馆老板,你让厨师做鱼,厨师依赖盐或糖这两种调味品,做出来的鱼是甜是咸由厨师控制

现在你叫厨师做鱼,并且塞给厨师一罐糖,厨师就被你控制了,只能做糖醋鱼

就很灵活,你想吃红烧鱼的时候,给厨师盐,像参数一样,厨师就产出咸的鱼了

 

原来厨师依赖的糖和盐,作为参数传入了,就是依赖注入

原来是厨师类来控制产出的,变成由你来控制(通过传入依赖的操作类),就是控制反转

 

可能原来新来的厨师你都要交代一句,给我做甜的

后来就不用交代了,你只要给厨师糖就行,不管哪个厨师,做出来的都是甜的

厨师就很容易替换了

 

和厨师交代做甜做咸相当于修改类的内部,客户每次变换口味,都要修改类的内部,给厨师糖相当于传入参数,客户换口味,只要替换给厨师的参数就好,不用改类的代码了

spring的xml配置文件里,好多都是给某个类配置入参是哪些具体的实现类的,就好像在程序启动的时候就给做鱼的厨师准备好了糖,给做肉的厨师准备好了盐

如果口味要变,只要改个xml配置就好

 

面向接口编程就是,告诉厨师在鱼下锅的时候用调味料(接口),具体用糖还是盐,看传入的参数

类里面只操作接口,具体接口的实现类是什么,看入参传进来的

入参传什么,类就实现成什么样

 

posted @ 2019-03-27 16:01  syxsdhy  阅读(443)  评论(0编辑  收藏  举报