![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
FD Team
|
Хотел узнать кто как справляется с такой проблемой (или задачей).
Есть, например, карточный стол (назовем CardTable class). Требуется раздать карты (Cards class). Когда карты будут розданы, требуется запустить определенную функцию в классе CardTable). Каждый раз эта функция разная (нарпимер после первой раздаче карт требуется запустить ф-цию cardHandFinished, а после воторой - endGame, и так далее). При чм не просто запустить функцию, а еще и передать ей параметр из класса Cards. Интересует кто как справляется с этой задачей. |
|
|||||
|
Banned
[+1 16.05.2006]
[++1 16.05.2006] [+ 1 21.05.06] [++ за хамство] [+1 21.05.2006] Регистрация: Dec 2003
Сообщений: 3,925
|
Паттерн Front Controller.
Делаешь ряд команд (действий, которые различаются). Сдаешь карты, по окончанию выбираешь, что вызывать, отдаешь в виде строки методу. Он вызывает соответствующую команду (создает ее экземпляр, отдает ей параметр, если надо, и запускает методом execute). |
|
|||||
|
Banned
[+1 16.05.2006]
[++1 16.05.2006] [+ 1 21.05.06] [++ за хамство] [+1 21.05.2006] Регистрация: Dec 2003
Сообщений: 3,925
|
Пардон, вы бы почитали про паттерн-то. Логика должна быть в первичном контроллере. Команды -- это кусочки логики, они нужны для того, чтобы не держать в классе слишком много одновременно, если все равно все разом не понадобится.
В хелпе этого метода вы и не найдете. Потому что паттерны основаны на ролях. А роли -- это понятие абстрактное. Классы в паттернах могут называться как угодно, главное сохранить механизм их взаимодействия. |
|
|||||
|
FD Team
|
скажу сразу, что до селе обходился так. CardTable запускал в классе Card функцию сдачи, и вместе с тем передавал ей в виде параметра функцию, которую надо запустить потом. Параметры при этом передавать особо не удавалось (.
|
|
|||||
|
FD Team
|
поизучал Fron Controller
Как я понял его, касаемо флеш: 1. После раздачи карт вызывается всегда один и тот же метод (напр. frontController), которому передается параметр-состояние (напр. "cardHandFinished" или ""endGame", если брать мой пример). 2. Method frontController по парамету смотрит, что ему вызвать и вызывает. Передать параметры от Card в CardTable таким образом можно так : frontController.call(CardTable, params) Поправьте меня. пожалуйста, если я где не прав. |
|
|||||
|
Banned
[+1 16.05.2006]
[++1 16.05.2006] [+ 1 21.05.06] [++ за хамство] [+1 21.05.2006] Регистрация: Dec 2003
Сообщений: 3,925
|
Начнем с того, что по логике управлять сдачей должен не стол, а некий контроллер.
Ну, допустим, у вас просто так нелепо назван этот самый контроллер. СДача -- это команда. Все остальные действия после сдачи -- тоже. 1. Сдаем. var lastLayout : Layout = this.layCardsOut(); 2. Принимаем решение, что делать. checkCardsSet( lastLayout ); 3. Внутри checkCardsSet решаем, что вызывать. Делаем экземпляр команды и и сполняем ее var numberOfQueens : layour.getQueens().length;
switch( numberOfQueens )
{
case 3:
var command : StayCommand = new StayCommand();
command.execute(); // здесь выполняются действия, гласящие, что новых карт мы не берем
break;
case 1:
var getMore : getMoreCommand = new getMoreCommand();
getMore.execute();
break;
}
|
![]() |
![]() |
Часовой пояс GMT +4, время: 15:57. |
|
|
« Предыдущая тема | Следующая тема » |
|
|