![]() |
Как улучшить класс APIConnection. Вопрос по обработке полученных данных.
Недавно в своем блоге писал о библиотеке для роботы с Вконтакте API. В библиотеке единственным обязательным классом служит APIConnection, который занимается контролем над потоком вызовов, а сами вызовы это VkontakteCall с самим сформированым запросом и обработчиками этого запроса. На экземпляры класса вешаются события успешной загрузки и ошибки в ответе а так же ошибки загрузки. Так вот товарищ cleptoman написал, что создания отдельного кола - это не то что совсем бы хотелось от библиотеки и лучше бы если был класс который рулит запросами и диспатчит события . Идея отличная только вот не могу остановиться на реализации.
Переписал APIConnection и теперь он выглядит вот так: Смотрите следующий пост ( есть ограничения форума на количество символов в посте, пришлось даже удалить даже часть вода в классе ). APIConnection теперь не наследует класс EventDispatcher, а реализует интерфейс IEventDispatcher. Сделано было для того что бы можно было использовать привычные addEventListener() и removeEventListener() но с другой реализацией. Теперь у каждого кола есть уникальный тип события который есть же сигом запроса это кола. События вешаются как обычно, но тип события же не имеет ни какого значения так как формируеться совсем другой и нужен скорее для ясности происходящего. Событие вешается только после того как добавили в поток вызовов кол. Много думал может просто сделать обычные колбеки и не заморачиватся с событиями. Или же вешать события на класс сколько будет удобно а в самом обработчике события проверять от какого вызова метода пришол ответ и потом выполнять действия. Или же отставить все как есть и нечего не изменять. Код AS3:
|
Код AS3:
Неужели вот это всем все равно? Как бы не только для себя делаю. |
Неужели вот это всем все равно? Как бы не только для себя делаю.
|
Ну могу покритиковать. Берем пример из блога и смотрим, что приходится писать при каждом вызове:
Код AS3:
Пример того, как это могло бы быть: Код AS3:
Итого - ровно одна строчка на запрос вместо 5. И в обработчике результата работа идет не с абстрактными row (или что там еще есть) а со вполне конкретными пользователями, которых мы запрашивали (или не запрашивали). По поводу событий. Скажите, а как вы собираетесь обрабатывать события в обработчиках? Точно хочется получать весь спам от "неизвестных" запросов? Потому что для "своих" запросов обработчики то известны и их можно коллбэком передать. Так как методов много, сразу все писать будет долго. Я бы делал удобное (именно удобное для использования в количестве 20-30 раз в проекте) API с минимумом удобных методов - полным разбором результатов, говорящими параметрами и т.п. А затем все это при необходимости расширял (практически все затем делается достаточно просто). Собственно, именно так и делаю :) |
| Часовой пояс GMT +4, время: 17:47. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.