IoC和DI概念对我来说非常混乱,所以我阅读了很多观点和不同人的帖子,最后得出结论。据我了解这些主题是......
控制反转是java中用于制作松散耦合且更易于维护的应用程序的技术,依赖注入是实现此概念(技术)的方法之一。
控制容器的反转在运行时从java类注入依赖关系,以使松散耦合的应用程序。
这是真的吗?如果我错了,请纠正我......
答案 0 :(得分:17)
IoC是一个通用术语,而不是让应用程序在框架中调用方法,框架调用应用程序提供的实现。
DI是IoC的一种形式,其中实现通过构造函数/设置器/服务查找传递到对象中,对象将依赖于该对象。为了表现正确。
答案 1 :(得分:11)
这些是在java编程中实现松散耦合的模式
DI(依赖注入):
依赖注入是用于创建对象实例的模式
其他对象依赖于编译时不知道
哪个类将用于提供该功能,或者只是将属性注入对象的方式称为依赖注入。
我们有三种类型的依赖注入
Spring只支持Constructor Injection和Setter / Getter Injection。
IOC(控制权倒置):
控制容器以创建和注入应用程序所依赖的对象实例,意味着使用new
运算符创建对象,让容器为您执行此操作。
控制反转依赖于依赖注入,因为需要一种机制来激活提供特定功能的组件
这两个概念以这种方式协同工作,以允许编写更灵活,可重用和封装的代码。因此,它们是设计面向对象解决方案的重要概念。
依赖注入的示例
以前我们正在编写像这样的代码
Public MyClass{
DependentClass dependentObject
/*
At somewhere in our code we need to instantiate
the object with new operator inorder to use it or perform some method.
*/
dependentObject= new DependentClass();
dependentObject.someMethod();
}
使用依赖注入,依赖注入器将为我们取消实例化
Public MyClass{
/* Dependency injector will instantiate object*/
DependentClass dependentObject
/*
At somewhere in our code we perform some method.
The process of instantiation will be handled by the dependency injector
*/
dependentObject.someMethod();
}
上述将控件提供给其他实例(例如容器)以进行实例化和注入的过程可称为控制反转
您可以在我的答案中阅读有关依赖注入和IOC的更多信息: - 您可以在这里找到概念的优势和应用。
答案 2 :(得分:1)
控制反转意味着程序将控制委托给将驱动流程的其他人IOC(控制反转)是一般父项,而DI(依赖注入)是IOC的子集。 IOC是一个应用流程被颠倒的概念。不属于该实体的逻辑控制由其他人采取。 DI提供对象所需的对象。因此,不是依赖关系构建自己,而是注入它们。上述方法实现的最大好处是“解耦”,我们可以调用一个对象并传递保持对象独立的任何对象,从而提高可重用性和维护性。
答案 3 :(得分:0)
控制反转(IoC)是指一种编程风格,其中框架或运行时控制程序流。控制反转意味着我们正在从正常方式改变控制。它适用于依赖性倒置原则。
DI是一种软件设计模式,允许我们开发松散耦合的代码。 DI是减少软件组件之间紧密耦合的好方法。 DI还使我们能够更好地管理我们软件的未来变化和其他复杂性。 DI的目的是使代码可维护。
答案 4 :(得分:0)
答案 5 :(得分:0)
控制和依赖注入反转是Spring框架的核心设计模式。 IOC和DI设计模式也是Java中流行的设计模式访谈问题。顾名思义反转控制模式反转管理对象生命周期的责任,例如创建一个对象,从应用程序到框架设置它们的依赖关系等,这使得编写Java应用程序变得更加容易。