Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.5 MB
Время: 0.029 c
2-1157313737
Селезин
2006-09-04 00:02
2006.09.24
Как определить строку popupmenu?


2-1157017070
BronOS
2006-08-31 13:37
2006.09.24
доступ к объекту на форме MDI Child


1-1155143860
Handle
2006-08-09 21:17
2006.09.24
Вопрос про SysListView.


1-1154450022
Tanya
2006-08-01 20:33
2006.09.24
Вытащить текст из дочернего окна


15-1157039421
ArtemESC
2006-08-31 19:50
2006.09.24
html-книга...