Oop 运行时多态性是否可以称为控制反转
我们知道OOP中的运行时/动态多态性是什么(原则1)。 控制权倒置只是指(根据维基上的定义)(原则2) 你如何区分这两者;我们可以说#1是#2的超集吗。Oop 运行时多态性是否可以称为控制反转,oop,polymorphism,inversion-of-control,concept,Oop,Polymorphism,Inversion Of Control,Concept,我们知道OOP中的运行时/动态多态性是什么(原则1)。 控制权倒置只是指(根据维基上的定义)(原则2) 你如何区分这两者;我们可以说#1是#2的超集吗。 如果不是的话,我们如何区别或说它们相似呢?IoC只是你的对象为任何愿意使用它的人公开了一个接口,这就成了他的问题——他将如何以及何时这样做(与静态类型或方法调度无关——这是纯API的事情) 多态性是一种在运行时使用确切对象的类型行为的能力,它可以改变方法的调度方式,例如,如果方法被重写,以及所有这些都可以保持类型安全性 甚至不知道如何比较这两者
如果不是的话,我们如何区别或说它们相似呢?IoC只是你的对象为任何愿意使用它的人公开了一个接口,这就成了他的问题——他将如何以及何时这样做(与静态类型或方法调度无关——这是纯API的事情) 多态性是一种在运行时使用确切对象的类型行为的能力,它可以改变方法的调度方式,例如,如果方法被重写,以及所有这些都可以保持类型安全性
甚至不知道如何比较这两者。因此,阅读更多特定的IOC实现(依赖注入)肯定是动态多态性的一种用法。当然,这些(1和2)是不同的概念,但它们有一些共同点。对于这两个概念,我们永远不能说一个概念是另一个概念的超集
从wiki页面 实施技术(国际奥委会部分) 在面向对象编程中,有几种基本技术可以实现控制反转。这些是:
-1- Using a factory pattern
-2- Using a service locator pattern
-3- Using a dependency injection, for example:
-a- A constructor injection
-b- Parameter injection
-c- A setter injection
-d- An interface injection
-4- Using a contextualized lookup
-5- Using Template method design pattern
-6- Using strategy design pattern
依赖注入是一种基于运行时/动态多态性思想的东西我不是IoC和DI(依赖注入)方面的专家,但我猜您被以下事实误导了:IoC使用多态性以松散耦合的方式向类提供依赖性 您向另一个对象提供(注入)类的对象,实现某个接口或超类 但是,IoC和多态性是非常不同的概念:
- 是面向对象语言的基础之一
- 是一种设计模式