2011-02-05 110 views
2

想知道它是否适合混合依赖注入与工厂模式?我会在运行时创建不同类型的对象,并使用它们在DI很好的情况下注入东西,因此可以在工厂构造中注入传递连接字符串或其他东西?将依赖注入与工厂模式混合很好吗?

谢谢。

+1

这里是Q的清单及作为该说说DI和抽象工厂:http://stackoverflow.com/questions/2280170/why-do-we-need-abstract-factory-design-pattern/2280289#2280289 – 2011-02-05 18:20:17

回答

5

这其实很常见。如果你需要某个类的实例,你将注入一个工厂而不是特定的对象。但是,您应该使用容器来构造这些对象(如果需要构建其他对象),请保留该模式并且不要创建依赖项。

1

绝对!你甚至可以将物体注入工厂!

public class UserFactory 
    private final UserStore userStore; 

    @Inject 
    UserFactory(UserStore userStore) { 
    this.userStore; 
    } 

    // etc 
} 

public class CreateUserAction implements Action { 
    private final UserFactory userFactory; 

    @Inject 
    CreateUserAction(UserFactory userFactory) { 
    this.userFactory = userFactory; 
    } 

    @Override 
    void performAction() { 
    User user = userFactory.newUser().withRandomId().persisted().build(); 
    } 
}