前情提要:
一个悲催的码农去买饭,同时又要买奶茶、买炸鸡、买可乐、买尿不湿。
情景再现
高耦合码农:指码农去到A场所买饭,去B场所买奶茶,去到C场所买炸鸡,去到D场所买可乐,去到E场所买尿不湿。
一天下来,高耦合码农直接累晕在地。
低耦合码农:点击打开美团外卖,分别选择A、B、C、D、E场所店铺中的东西,选择下单。半小时后,低耦合码农码农刚关闭GayHub,外卖就送到了自己的手上。
我们不难看出,高耦合码农和低耦合码农之间的不同在哪?
没错就是——美团(不是)
就是——IOC
其中饭、奶茶、炸鸡、可乐、尿不湿这些统称为依赖对象。
码农称为对象
美团外卖就是容器。
骑手配送给码农的这个操作,就是注入。
IOC为我们实现了“解耦”,将本来需要各处实例化的对象,统一交由容器(美团)管理,然后一旦有人需要,直接从容器中注入给这个人(码农)。
IOC即:控制反转
在这个情景中,获取对象的操作被反转了。
容器(美团)帮我们查找及注入依赖对象,对象(码农)只是被动的接受依赖对象(饭、奶茶和尿不湿等),所以反转,依赖对象反转了的获取。