Прямо сейчас, я делаю библиотеку Gui для игр. Виджеты имеют несколько обратных вызовов/прослушивателей для различных событий.Это хороший дизайн?
Дело в том, что слушатель может использовать событие.
Вопрос приходит сюда. Базовый класс вызывается с информацией о событии. Он вызывает обратные вызовы для слушателей. Любой из них может обрабатывать событие.
Это означает, что пользователь должен проверить, было ли обработано событие или нет.
Ex:
void TextBox::MouseClick(MouseEvent &event)
{
Widget::MouseClick(event);
if(!event.isHandled())
{
//do stuff
}
}
Альтернативой было бы, чтобы скрыть это и есть OnMouseClick (...), который является виртуальным и не вызывается, если условие не будет выполнено. Я обнаружил, что это довольно грязно, и раздражает тех, кто делает больше событий.
Это хороший дизайн? Если нет, что может быть лучше для этого?
Благодаря
Какой сделать вы хотите знать, хороший ли дизайн? Сегмент вашего котируемого кода - довольно обычный способ. Вы могли бы найти «высокопоставленного посетителя» (проверьте google), чтобы быть интересным ... может быть. –
ну, я предпочитаю бывшее с последнего, onMouseClick() кажется грязным – jmasterx