Просмотр полной версии : Общение классов, передача параметров
Хотел узнать кто как справляется с такой проблемой (или задачей).
Есть, например, карточный стол (назовем CardTable class). Требуется раздать карты (Cards class). Когда карты будут розданы, требуется запустить определенную функцию в классе CardTable). Каждый раз эта функция разная (нарпимер после первой раздаче карт требуется запустить ф-цию cardHandFinished, а после воторой - endGame, и так далее). При чм не просто запустить функцию, а еще и передать ей параметр из класса Cards. Интересует кто как справляется с этой задачей.
Паттерн Front Controller.
Делаешь ряд команд (действий, которые различаются). Сдаешь карты, по окончанию выбираешь, что вызывать, отдаешь в виде строки методу. Он вызывает соответствующую команду (создает ее экземпляр, отдает ей параметр, если надо, и запускает методом execute).
то есть вся логика, кого вызвать после сдачи, должа быть в классе Card ? Этого бы не очень хотелось.
А что за метод execute? В хелпе не нашел
Пардон, вы бы почитали про паттерн-то. Логика должна быть в первичном контроллере. Команды -- это кусочки логики, они нужны для того, чтобы не держать в классе слишком много одновременно, если все равно все разом не понадобится.
В хелпе этого метода вы и не найдете. Потому что паттерны основаны на ролях. А роли -- это понятие абстрактное. Классы в паттернах могут называться как угодно, главное сохранить механизм их взаимодействия.
пока что ничего не понял. Буду про паттерны читать. Если подскажете, где более наглядно это описано, был бы премного благодарен. Спасибо
скажу сразу, что до селе обходился так. CardTable запускал в классе Card функцию сдачи, и вместе с тем передавал ей в виде параметра функцию, которую надо запустить потом. Параметры при этом передавать особо не удавалось (.
поизучал Fron Controller
Как я понял его, касаемо флеш:
1. После раздачи карт вызывается всегда один и тот же метод (напр. frontController), которому передается параметр-состояние (напр. "cardHandFinished" или ""endGame", если брать мой пример).
2. Method frontController по парамету смотрит, что ему вызвать и вызывает.
Передать параметры от Card в CardTable таким образом можно так : frontController.call(CardTable, params)
Поправьте меня. пожалуйста, если я где не прав.
Начнем с того, что по логике управлять сдачей должен не стол, а некий контроллер.
Ну, допустим, у вас просто так нелепо назван этот самый контроллер. СДача -- это команда. Все остальные действия после сдачи -- тоже.
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;
}
4. Все. Карта в подобном случае вообще должна быть тупым хранилищем данных о старшинстве и масти, то есть Value Object.
спасибо, весьма позновательно. Постяраюсь извлеч максимум из этого способа.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.