比如说,我要写个写个程序表示夫妻关系。那么我会先写个老公类,然后老公类中会有老婆类作为他的属性。同样老婆类中会有老公类作为她的属性。
接下来在程序的运行过程中,我要将夫妻关系实例化:黄晓明和AngelaBaby杨颖,汪峰和章子怡,周杰伦和昆凌,赵又廷和高圆圆,张杰和谢娜,徐峥和陶虹,陆毅和鲍蕾,黄磊和孙莉,邓超和孙俪,冯小刚和徐帆,田亮和叶一茜,陈凯歌和陈红,张国立和邓婕,陈建斌和蒋勤勤,徐熙媛和汪小菲,吴君如和陈可辛,梁朝伟和刘嘉玲,刘青云和郭蔼明,张智霖和袁咏仪,汪涵和杨乐乐,霍建华和林心如,冯绍峰和赵丽颖。
第一个实例化的办法就是我一个一个创建,一个一个new。(我自己控制)
第二个实例化的办法就是我交给Application Context(把控制权交出,也就是控制反转,也就是IoC),在程序的运行中由Application Context根据情况自动生成。
你可以想象有个两个具有夫妻关系的空模板,然后情境1:我需要男方是搞摇滚音乐的,女方是影后,那么空模板就会被自动注入相应的特征并生成汪峰和章子怡。然后情境2:我需要男方演过《铁齿铜牙纪晓岚》,女方演过《红楼梦》,那么空模板就会被自动注入相应的信息并生成张国立和邓婕。然后情境3:我需要男方是北京人,女方是台湾人,那么空模板就会被自动注入汪小菲和徐熙媛。这个自动注入就叫做DI。
换句话说,你要是想要实现IoC就必须要DI。你要是想财富自由就必须要挣钱。你要是想增肌就必须喝蛋白粉。你要是想读博士必须读完本科。你要是想恋爱就必须找个人和你谈恋爱。