依赖注入和工厂模式的区别是什么啊?我感觉功能有点相似。
不知道这个思想是否正确,欢迎各位大佬批评指正。
你好,同问
IOC=控制反转=一种编程思维
依赖注入和工厂模式,只是具体实现的一种编程思维
打个比方:房门-锁 这是不是很依赖 要开这个门必须要这个锁
如果家里有别人于是 这把锁复制黏贴给你的, 媳妇 老婆 孩子 父母 物业 ,维修工人..卧槽这么多锁
房门很依赖这把锁
现在加入IOC容器的设计思维,用依赖注入的方式改造一下:房门-微信公众号-锁
你看手机=锁, 在来个人脸识别=锁,再来个声控=锁 不管你是什么, 只要你把对象给公众号 开门逻辑 我就可以开门 房门-公众号(IOC)-锁(人脸识别,手机,声控)
好现在你要做一个开门程序:
正常就是:实例化锁 然后给开门 现在老板想加一个人脸识别,老板这个不好做改不动,老板必须要 .... 于是复制黏贴 在旁边打一个洞装个人脸识别的门吧....过几天又想来个声控开门......再过几天...这破代码 谁写的!!!
加入IOC容器的设计思维:房门-公众号(IOC) 什么你老板要加人脸识别? 声控? 腿控? 能不能一次说完, 随便多少个,速度点, 你家萝莉控都行 只有符合IOC定义 我就给你开门
依赖注入(DI)和工厂模式相似的原因是,它们是软件结构控制反转(IoC)的两种实现。简单地说,它们是针对同一问题的两种解决方案。
因此,Factory模式和DI之间的主要区别是如何获取对象引用。
依赖注入的名称暗示该引用已注入或提供给您的代码。使用Factory模式,你的代码必须请求引用,以便你的代码访存该对象。两种实现都删除或分离了代码与代码所使用的对象引用的基础类或类型之间的链接。
值得注意的是,工厂模式(或者实际上是抽象工厂模式,它们是返回新工厂并返回对象引用的工厂)可以编写为在运行时动态选择或链接到所请求对象的类型或类。这使它们与IoC的另一种实现的Service Locator模式非常相似(甚至比DI更是如此)。
工厂设计模式(在软件方面)非常古老,已经存在了一段时间。自从最近架构模式IoC流行以来,它正在复苏。
IoC设计模式:注入器正在注入,定位器正在定位,工厂已经重构。
不是很懂啊