Хорошо ли смешивать внедрение зависимостей с фабричным шаблоном? - PullRequest
2 голосов
/ 05 февраля 2011

Хотите знать, хорошо ли смешивать инъекцию зависимостей с фабричными шаблонами? Я хотел бы создать разные объекты во время выполнения и использовать их там, где DI хорош для инъекций, так что можно нормально вводить в конструкцию фабрики такую ​​передаваемую строку соединения или что-то еще?

Спасибо.

Ответы [ 2 ]

5 голосов
/ 05 февраля 2011

Это довольно часто на самом деле. Если вам нужны экземпляры определенного класса по требованию, вы внедрите фабрику вместо определенного объекта. Однако вы должны использовать контейнер для создания этих объектов (если для этого нужны другие объекты), чтобы оставаться в шаблоне и не создавать зависимости.

1 голос
/ 05 февраля 2011

Абсолютно! Вы даже можете вводить объекты на свои фабрики!

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();
  }
}
...