Шаблон стратегии - Ввод из пользовательского интерфейса - PullRequest
0 голосов
/ 08 июня 2011

У меня очень простой вопрос.У меня есть пользовательский интерфейс, который предлагает пользователю выбрать «Вариант A» или «Вариант B» (фактические кнопки выбора).Как только пользователь выберет, я звоню в хранилище, которое подключается к базе данных, чтобы получить некоторые данные.

Для варианта A потребуется запрос определенного типа, а для варианта B - другой.Не вдаваясь в подробности, я реализовал шаблон стратегии с именами OptionAStrategy и OptionBStrategy, который будет генерировать правильный запрос, чтобы репозиторий мог использовать запрос.

Теперь вопрос заключается в том, как передать факт выбора пользователем «Option».A или B. Я могу передать действительную строку, скажем, «Option A» или «Option B», и передать эту строку в StrategyFactory для создания экземпляра правильной OptionStartegy.Но разве это хорошая практика?

Как пользовательский интерфейс передает выбранный вариант пользовательского интерфейса, чтобы фабрика стратегий могла правильно создать правильный экземпляр стратегии?при условии, что стратегия находится на уровне репозиториев

Спасибо за ура

Удар: Нет ответов - мало просмотров: - (

Ответы [ 2 ]

1 голос
/ 27 июня 2011

Вы можете определить свои стратегии как реализации Action или ActionListener, а затем присоединить их к определенному элементу пользовательского интерфейса, например JButton. По щелчку пользователя это действие будет выполнено.
Например, используя Java Swing:

final Action optionA = new AbstractAction("Option A") {
    public void actionPerformed(ActionEvent e){
        // option A code
    }
};
final JButton optionAButton = new JButton(optionA);
// add button to UI

Преимущество использования действий Swing заключается в том, что многие компоненты пользовательского интерфейса могут быть созданы из Action, что позволяет вам предоставлять несколько механизмов пользовательского интерфейса различного стиля, которые все выполняют одну и ту же функцию.

Следующим шагом будет создание фабрик для предоставления этих различных Action с каким-то специфичным для приложения контроллером, который затем внедрит их в компоненты пользовательского интерфейса.

0 голосов
/ 27 июня 2011

У вас должен быть контекст и стратегия интерфейса. В вашем контексте вы можете выбрать if / else, чтобы выбрать подходящую стратегию или использовать фабричный класс, чтобы получить стартовый план. Смотри Здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...