1 | ||||||||||||||||
Паттерн Команда08.02.2014, 01:26. Показов 2510. Ответов 3
Метки нет (Все метки)
Привет всем!
Объясните мне пожалуйста паттерн команда, вернее как его реализовывать: Introduction: Разрабатывается клиент для ftp-сервера в консольном виде. Программа на стороне клиента получает запрос от юзера и начинает парсить запрос: К примеру возьмем вот такой запрос: connect localhost 21 Дальше строка сплитится через пробелы и ожидается, что первая строка в массиве строк будет именем команды - все остальное параметрами команды, причем параметров может и не быть, а могут идти в объязательном порядке(SendToServerCommand к примеру) Есть интерфейс Command->execute(): void; Есть реализация ConnectCommand->execute(): void - как мне передать в execute() параметры? Я не могу в интерфейсе Command изменить метод execute(String[] args) - потому что есть другие команды-пустышки, которые ничего в аргументы не должны принимать. Так же команда ConnectCommand в методе execute должна произвести инициализацию соединения, то бишь открыть соединение по сокету по 21 порту и настроить входные и выходные потоки для данного приложения в целом. Как это реализовывать? Т.е. вариант который у меня сейчас реализован он в корне не верен, поскольку в метод передается не только массив строк, но и ссылка на класс, содержащий объекты классов потоков И вообще реализация у меня в корне не верна, как Вы можете видеть ниже: Кликните здесь для просмотра всего текста
Кликните здесь для просмотра всего текста
Вот структура проекта, если кому нужно Не по теме:
Не по теме:
Кликните здесь для просмотра всего текста
0
|
08.02.2014, 01:26 | |
Ответы с готовыми решениями:
3
Паттерн Command Паттерн стратегия Паттерн Singleton Составить паттерн |
08.02.2014, 01:49 | 2 | |||||
проще пример сложно придумать
1
|
08.02.2014, 08:25 [ТС] | 3 | |||||
Спасибо. Я одно только не могу уяснить: а на **га так? Что я не мог в методе парсинга написать так
И что я не получаю? В общем плюсы и минусы данного паттерна, если можно
0
|
08.02.2014, 13:37 | 4 |
например вам отправляет команду плагин или клиентское приложение, что за действия там будут произведены, ваш сервер не знает, но знает одно что надо вызвать метод execute(), и ему этого достаточно чтобы выполнить команду
например в моём примере ComandProcessor может находиться на сервере, а MyCommand ему прилетело с интернета по RMI остальное долго обьяснять, проще почитать книжку про паттерны Design Patterns - Gang of Four
1
|
08.02.2014, 13:37 | |
08.02.2014, 13:37 | |
Помогаю со студенческими работами здесь
4
Паттерн Visitor Паттерн декоратор Паттерн State Паттерн Factory Method Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |