将依赖注入与工厂模式混合是好的吗?

时间:2011-02-05 17:56:56

标签: design-patterns dependency-injection factory-pattern

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

感谢。

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分: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();
  }
}