Chu*_*uck 4 java refactoring dependency-injection
DI创建了一个额外的抽象层,这样如果您的实现类发生了变化,您只需使用相同的接口插入另一个类即可.
但是,当您想要使用不同的实现类时,为什么不简单地重构?像Python和Ruby这样的其他语言也很好用.为什么不用Java?
Mic*_*yan 13
这是依赖注入的错误表征.并不是你有一个特定接口的实现随着时间的推移而变化; 相反,可能会同时存在许多不同的接口实现,并且将使用哪种实现可以在程序的多个不同运行中变化.例如,在您的实际程序中,您可能希望使用一个实现,而在单元测试期间,您可能希望使用更易于测试的替代版本"模拟"该实现.在这种情况下,重构不是解决方案,因为您需要能够在不中断开发过程的其余部分的情况下始终进行测试.
还应注意,依赖注入通常用作Singleton反模式的解决方案; 它允许一个人拥有一个单例对象,可以在测试过程中轻松模拟出来.并且,如果后来证明单例假设确实不正确,则可以用各种实现替换该单例.
您可能会发现一些有助于更好地理解主题的资源: