powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Pattern strategy & @Inject
4 сообщений из 4, страница 1 из 1
Pattern strategy & @Inject
    #39557518
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сам паттерн стратегия
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
public interface UserStrategy {
  User login();
}

@Service
public class AbstractUserStrategy {
  @Inject
  protected MessageService messageService;
}

@Service
@Log4j2
public class User1 extends AbstractUserStrategy implements UserStrategy {
  @Override
  public User login() {
...
    return user;
  }
}

public class CommonUserStrategy {
  private UserStrategy userStrategy;

  public CommonUserStrategy(UserStrategy userStrategy) {
    this.userStrategy = userStrategy;
  }

  public User login() {
    return userStrategy.login();
  }
}



Вызов паттерна
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
@Service
@Log4j2
public class UserServiceImpl implements UserService {
  private static Map<String, CommonUserStrategy> userStrategyMap = new HashMap<String, CommonUserStrategy>();
...

  static {
    CommonUserStrategy user1 = new CommonUserStrategy(new User1());
    CommonUserStrategy user2 = new CommonUserStrategy(new User2());

    userStrategyMap.put(UserType.USER1.name(), user1);
    userStrategyMap.put(UserType.USER2.name(), user2);
  }

  @Override
  public User getUserByLoginPass(String login, String password, UserType userType) {
...
    CommonUserStrategy commonUserStrategy = userStrategyMap.get(userType.name());
    if (commonUserStrategy != null) {
      user = commonUserStrategy.login(userEntity, UserUtil.getAvatarUrl(userEntity, contentService));
    }
    return user;
  }
}



Собственно вопрос почему AbstractUserStrategy messageService = null
Может надо было явно создавать, а инъектить тоже
CommonUserStrategy user1 = new CommonUserStrategy(new User1());
...
Рейтинг: 0 / 0
Pattern strategy & @Inject
    #39557533
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это что вообще? spring, java ee или еще какая хрень? если ты создаешь экземпляр user1 или user2 вручную путем вызова конструктора, откуда в нем возьмутся инъекции?
...
Рейтинг: 0 / 0
Pattern strategy & @Inject
    #39557545
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha,

Это я уже и понял, а как лучше заинъектить это?
...
Рейтинг: 0 / 0
Pattern strategy & @Inject
    #39557587
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-а как лучше заинъектить это?
средствами используемого фреймворка естественно, какие еще могут быть варианты? Как правило любой dependency injection фреймворк поддерживает как "декларативную" (не знаю какой термин тут правильней использовать) инъекцию путем ее декларации в коде, так и динамическую (что-то на подобие injector.getInstance(Class)). По хорошему, если реализаций больше 1й и выбор зависит от какого-то условия (как в примере), то желательно динамическую инъекцию использовать.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Pattern strategy & @Inject
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]