针对接口编程,不针对实现编程。间接的就符合了LSP和Design by Contract理论,实现功能上符合了ISP。
区别在于
抽象工厂模式只是部分满足了DIP,因为它未满足“高层模块不应该依赖于低层模块,二者都应该依赖于抽象”,换言之在相关高层模块还有抽象工厂的存在,就是依然存在耦合。解耦是最终目的,但实际情况是不可能消除耦合。但IoC or DI 这个思想借鉴了硬件设计,将耦合转移了从而变相的讲模块之间的耦合消除了,将模块之间的耦合转移到了模块与容器之间。从而IoC or DI完全满足了DIP