java 什么是注入_java – 什么是依赖注入和Spring框架?
我们使用依赖注入(DI)来实现松散耦合.选择任何特定的DI容器并不重要.
每次使用new关键字创建类的实例时,都会将代码紧密地耦合到该类,并且您将无法用不同的实例替换该特定实现(至少在没有重新编译代码的情况下).
这在C#中看起来像这样(但在Java中是等效的):
public class MyClass
{
public string GetMessage(int key)
{
return new MessageService().GetMessage(key)
}
}
这意味着如果您以后想要使用不同的MessageService,则不能.
另一方面,如果您将一个接口注入到类中并遵守Liskov Substition Principle,您将能够独立地改变消费者和服务.
public class MyClass
{
private readonly IMessageService messageService;
public MyClass(IMessageService messageService)
{
if(messageService == null)
{
throw new ArgumentNullException(“messageService”);
}
this.messageService = messageService;
}
public string GetMessage(int key)
{
return this.messageService.GetMessage(key)
}
}
虽然这看起来更复杂,但我们现在已经设法遵循Single Responsibility Principle,确保每个合作者只做一件事,并且我们可以彼此独立地改变.
此外,我们现在可以在不改变类本身的情况下改变MyClass的行为,从而坚持Open/Closed Principle.
还没有评论,来说两句吧...