![]() |
|
||||||||||
|
|
|
|||||
|
спасибо, приму к сведению.
Но в чем минус моего решения? public class Core { public var ADD_BLACKLIST:String = 'add_blacklist'; public var COMPLAINT_USER:String = 'complaint_user'; public var COMPLAINT_USER_SEND:String = 'complaint_user_send'; public var CLOSE:String = 'close'; public var SEND_GIFT:String = 'send_gift'; public var INIT_REG:String = 'init_reg'; ..................... public function Core() { ........... } public function logic($cmd:String='', $data:Object=null):void { trace('CMD: '+$cmd); if ($data) { trace('logic'); for ( var i in $data) { trace(i+" >> "+$data[i]); } } switch ($cmd) { ..................... case ADD_BLACKLIST: { GlobalVars.amf.toamf(GlobalVars.methods.addBlacklist, GlobalVars.handler.blacklistHandler, GlobalVars.account.amfSing($data)); } break; case COMPLAINT_USER: { GlobalVars.gui.attachToCentr(new Complaint($data),true); } break; case COMPLAINT_USER_SEND: { $data.cmd = 'send'; GlobalVars.amf.toamf(GlobalVars.methods.sendToSupport, GlobalVars.handler.supportHandler, GlobalVars.account.amfSing($data)); } break; ..... } if ($data && $data.remove) GlobalVars.gui.remove($data.remove); } } причем написав GlobalVars мне IDE подсветит возможные обработчики, к примеру пишу GlobalVars.core.logic, метод обработки логики (внешняя связь, GUI, обработка внутренних команд), после чего указываю GlobalVars.core.COMPLAINT_USER, что является командой и любые данные (в приемнике есть свой корректор на входящие данные). То-есть в плане глобальной логики мне нужно запомнить только GlobalVars. Идем дальше. В самом public function logic($cmd:String='', $data:Object=null):void { // команда switch ($cmd) { ..................... // используется константа потому напутать что-то очень сложно case ADD_BLACKLIST: { GlobalVars.amf.toamf(GlobalVars.methods.addBlacklist, GlobalVars.handler.blacklistHandler, GlobalVars.account.amfSing($data)); // GlobalVars.amf.toamf - отправка данных на сервер // GlobalVars.methods.addBlacklist - метод добавления в черный список // GlobalVars.handler.blacklistHandler - обработчик данных с коректировкой данных связанных с черным списком (добавление, удаление, вывод ) // GlobalVars.account.amfSing - подпись пользователя } break; case COMPLAINT_USER: { GlobalVars.gui.attachToCentr(new Complaint($data),true); // GlobalVars.gui.attachToCentr - добавить на экран объект по центру // new Complaint($data) - тут по сути должно быть получение экземпляра с библиотеки, но пока так. Создается класс в него сразу впихиваются данные для отображения. // true - означает использовать ли блокировку заднего экрана } break; ..... } if ($data && $data.remove) GlobalVars.gui.remove($data.remove); } В чем минус такого решения?
__________________
return this... Последний раз редактировалось AlexCooper; 25.05.2013 в 17:59. |
|
|||||
|
Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
|
Цитата:
2. Свитч в методе logic может разрастись во много сотен строк монотонного кода. 3. Код с упоминанием GlobalVars.core.* станет не переносимым. Например, небольшой пакет из 5-10 классов заточенный выполнять какую-либо конкретную задачу не получится просто вытащить из репозитория и тут же начать использовать в новом проекте. Нужно будет либо удалять GlobalVars.core.*, либо тащить в новый проект GlobalVars. Все зависит конечно от контекста, и возможно в вашем конкретном случае все это оправдано, но как правило концентрация логики в какой-то одной глобальной точке ни к чему хорошему не приводит. |
|
|||||
|
Обязательно посмотрю
Цитата:
Цитата:
Цитата:
__________________
return this... |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:26. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|