我一直在阅读 Effective Java,我对与 TDD 和依赖注入相关的第一项“使用静态工厂方法而不是构造函数”有一些担忧。
该项目说您应该避免使用公共/受保护/默认构造函数并使用静态工厂公开它。我同意与使用静态工厂相关的所有优点,例如工厂可以有名称、可以返回子类型、可以减少冗长等。但是,我认为 Joshua 错过了 TDD 的缺点,因为在您的代码中使用静态工厂会导致紧密耦合和你不能使用它来模拟类。我们将无法模拟将具有静态工厂的类。因此,它阻碍了测试驱动的开发。
第二点,我认为他错过了在当今的企业开发中,大多数应用程序都使用一个或另一个依赖注入容器。所以,当我们可以使用 DI 注入依赖项时,我为什么要使用它。
请解释它如何应用于当今包括 DI 和 TDD 的 Java 企业开发。