gpt4 book ai didi

java - 依赖注入(inject) : What's wrong with good old-fashioned refactoring?

转载 作者:搜寻专家 更新时间:2023-11-01 01:15:00 25 4
gpt4 key购买 nike

DI 创建了一个额外的抽象层,因此如果您的实现类发生变化,您可以简单地插入具有相同接口(interface)的不同类。

但是,当您想使用不同的实现类时,为什么不简单地进行重构呢?其他语言(如 Python 和 Ruby)以这种方式工作得很好。为什么不是 Java?

最佳答案

这是对依赖注入(inject)的错误描述。这并不是说您拥有随时间变化的特定接口(interface)的一种实现;相反,一个接口(interface)可能同时有许多不同的实现,并且将使用哪个实现可以在程序的多次不同运行中发生变化。例如,在您的实际程序中,您可能希望使用一个实现,而在单元测试期间,您可能希望使用更易于测试的替代版本“模拟”该实现。在这种情况下,重构不是解决方案,因为您需要能够一直进行测试,而不会中断其余的开发过程。

还需要注意的是,依赖注入(inject)通常被用作Singleton反模式的解决方案;它允许一个人拥有一个可以在测试期间轻松模拟的单例对象。而且,如果后来证明单例假设确实不正确,则可以用各种实现替换单例。

您可能会发现一些有助于更好地理解该主题的资源:

关于java - 依赖注入(inject) : What's wrong with good old-fashioned refactoring?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2527009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com