导航菜单

Java:控制反转(IoC)与依赖注入(DI)讲得很好

很长一段时间,我的控制逆转和依赖注入的概念非常模糊。当我闭上眼睛想着它时,总会有一种头晕的感觉。但为了成为一名优秀的Java工程师,我花了一周的时间才弄明白。

01、紧耦合

在我们的编码过程中,我们通常需要两个或更多个类来通过相互协作来实现业务逻辑。也就是说,对象需要获得对其协作对象的引用。如果采集过程需要自己实现,则代码的耦合会很高,维护成本会更高。

让我们通过实战来模拟它。如果法老是少林寺的主人,他希望年轻的僧人去佛法的地方。代码可以像这样实现。

第二类的代码如下:

公共课肖尔{public void saodi(){System.out.println('我很少在Chadharma的地方'); }}

旧国王班的代码如下:

公共类老王{public void mingling(){new Xiaoer()。saodi(); }}

测试类的代码如下:

公共类Test {public static void main(String [] args){Laowang laowang=new Laowang(); laowang.mingling(); }}

Laoming类的混合方法使用new关键字来创建Smaller类的对象 - 代码高度耦合,维护成本高。你为什么这么说?

有一天,达摩研究所的土地很脏。公主主持了这位年轻的僧侣,但这位年轻的僧人去修行了伊金井。谁会去扫地?公主主持了年轻的和尚,所以老王班我必须重新创建一个新的命令,所以代码变成这样:

公共课小三{public void saodi(){System.out.println('小三我在Chadharma的位置');公共类Laowang {public void mingling(){new Xiaoer()。saodi(); } public void mingling1(){new Xiaosan()。saodi(); }}

如果这位年轻的僧人去捡水,公主就会主持命令,让这位年轻的僧人到达佛法的地方。如果这种情况继续下去,老王班就会发疯。

老王主持说他觉得自己太傲慢了,下一次扫地的命令太麻烦了。他感到非常不舒服。

02、控制反转

我们必须想办法让公主主持它吗?

最好把这片土地的差事交给老王的老王。旧党负责召唤年轻的僧侣或年轻的僧侣或年轻的僧侣执行公主的命令。代码可以像这样实现。

定义一个扫描的和尚界面,代码如下:

公共界面Heshang {void saodi();}

第二类的代码更改如下:

公共阶级小儿实施了Heshang {