Текущий архив: 2006.09.24;
Скачать: CL | DM;
ВнизИспользование паттерна Comand. Найти похожие ветки
← →
Kolan © (2006-08-10 12:39) [0]Здравствуйте,
Не могу понять как его правильно использовать.инициатор отправляет запрос, вызывая операцию команды Execute.
Те если у меня есть комманда, которую я хочу проделать я пишу так:Command.Execute
?
А что делать если для выполнения комманды мне нужны параметры? В кинге есть пример:class PasteCommand : public Command { public:
PasteCommand(Document*);
virtual void ExecuteO; private:
Document* „document;
PasteCommand::PasteCommand (Document* doc) { _document = doc;
void PasteCommand::Execute () { _document->Paste();
}
Но если я вызываваю толькоExecute
как я передам параметр( в данном случаеDocument
)? А кто вызываетPasteCommand
?
Не понятно...
← →
Kolan © (2006-08-10 23:44) [1]Глупый вопрос чтоли?
← →
jack128 © (2006-08-10 23:47) [2]ты TAction использовал когда нить? У его метода Execute тоже нету параметров. Тем не менее - это никого не смущает..
← →
Kolan © (2006-08-11 00:02) [3]
> jack128 © (10.08.06 23:47) [2]
СTAction
както понятно. Присвоил его кнопке, на кнопку нажал - вызвалсяOnExecute
.
Переформулирую. Вот остальной код из книги.
PasteCommand::PasteCommand (Document* doc) {
_document = doc;
}
void PasteCommand::Execute () { _document->Paste();
}
Зачем нужнаPasteCommand
и кто её вызывает?
> У его метода Execute тоже нету параметров. Тем не менее
> - это никого не смущает..
Е еще вопрос: Можноли и нужноли использовать этот паттерн если я хочу проделывать операции(комманды) требующие параметров? И как это сделать, если возможно?
Те пример:
Была у меня функция:function Add(X, Y: Integer): Integer;
как её заменить этим паттерном?
← →
Ketmar © (2006-08-11 01:27) [4]совершенно как угодно. например, так: (const args: array of const). хотя это криво. %-)
← →
Суслик © (2006-08-11 01:37) [5]Как бы сказал небезызвестный ИШ - каждый овощь хорошь что-то там - не помню.
Одним словом - не надо заменять что-то паттерном. Паттерн нужно применять там, где он действительно работает.
ЗЫ. Советую тебе на rsdn"овский форумах в "архитектуре" пострашивать про паттерны, там много любителей доходчиво объяснить. мне в свое время очень помогло.
← →
Kolan © (2006-08-11 01:42) [6]
> Советую тебе на rsdn"овский форумах в "архитектуре" пострашивать
> про паттерны, там много любителей доходчиво объяснить. мне
> в свое время очень помогло.
О дельный совет. :)
> Как бы сказал небезызвестный ИШ
Дык я и пытаюсь понять подходит али нет...
← →
Джо © (2006-08-11 01:55) [7]Ну, в конце-концов, параметры комманды можно передавать методу фабрики, создающего эту комманду :)
← →
Ketmar © (2006-08-11 10:07) [8]ну опять пришли и не дали мне развернуться... а у меня столько идей было...
← →
jack128 © (2006-08-11 12:07) [9]Kolan © (11.08.06 0:02) [3]
С TAction както понятно. Присвоил его кнопке, на кнопку нажал - вызвался OnExecute. Для TAction вызвался OnExecute, для других типов action"ов что то другое..
а ты что, думаешь, в твоим Command"ом будет как то иначе? Просто поддержку TAction реализовал borland, а поддержку твоей команды должен будешь реализовать ты сам.
← →
clickmaker © (2006-08-11 16:38) [10]че-то муть какая-то
PasteCommand - это конструктор.
При создании, нужно указать документ, путем подсовывания его в конструктор.
Потом можно дергать методы без параметров, бо объект уже проинициализирован.
Чего непонятного?
← →
Джо © (2006-08-11 17:07) [11]> [7] Джо © (11.08.06 01:55)
> Ну, в конце-концов, параметры комманды можно передавать
> методу фабрики, создающего эту комманду :)
Ну, или прямо его же конструктору.
← →
Kolan © (2006-08-11 17:13) [12]
> clickmaker © (11.08.06 16:38) [10]
..........
> PasteCommand - это конструктор.
Убейте меня..
Точно, это же конструктор. Теперь все на места встало :).. Как я не допер сам...
Все теперь понятно как действует этот паттерн....
Благодарю
PS
С++ - вредный язык :)
Страницы: 1 вся ветка
Текущий архив: 2006.09.24;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.052 c