|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Цитата:
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
Цитата:
Ну и после наведения порядка внутри - АПИ тоже может как-то поменяться. (Статик манагер тоже под вопросом, но вот так вот вслепую не могу точно сказать. Надо смотреть на интеграцию в систему. Пальцем в небо сложно.) var turnDto:BattleTurnDto = new BattleTurnDto(); turnDto.battle_id = "1"; turnDto.unit_id = "10"; CommandManager.executeCommand(CommandList.COMMAND_BATTLE_TURN, turnDto); Цитата:
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Ну гм, тогда я тебя не понимаю.
Сожмём твой код: var turnDto:BattleTurnDto = new BattleTurnDto(); turnDto.battle_id = "1"; turnDto.unit_id = "10"; CommandManager.executeCommand(CommandList.COMMAND_BATTLE_TURN, turnDto); var turnDto:BattleTurnDto = new BattleTurnDto(1, 10); CommandManager.executeCommand(CommandList.COMMAND_BATTLE_TURN, turnDto); public function BattleTurnDto(battleID:int, unitID:int){ super(); super.commandName = CommandList.COMMAND_BATTLE_TURN; } var turnDto:BattleTurnDto = new BattleTurnDto(1, 10); CommandManager.executeCommand(turnDto); (в реальном коде это будет выглядеть как-то так) Ну и, конечно, после её исполнения надо где-то обработать ответ. Обычно я делаю это внутри самой команды: она сама находит нужные модели, расфасовывает данные и прочее, но иногда удобно получить коллбек о том, что команда исполнена в пользовательском коде. Добавляется листенер addCompleteHandler. Вот так рождается строчка: На каком шаге это сжатие кода превращает примерно-нормальный в код Александра?
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Цитата:
Цитата:
Или же одна команда может слать разные структуры(Это уже плохой вариант, но мало ли). Но в любом случае нигде не было оговорено связи структура == команда, ты искусственно эту связь прикрутил. Цитата:
Цитата:
Сразу же вопрос - а зачем было добавлять манагер с таким подходом? Как бы изначально екзекьют и есть в команде. Его наружу проксит манагер, ты берешь обратно заворачиваешь екзекьют через манагер в команде? О_о Логику совсем не уловил. Убери манагер и будет счастье. Дальше всё строится на этом твоем примере потому чем дальше тем глубже. Проще сделать таким вот образом, если сильно хочется: И тогда никакой манагер тебе никуда не упирается (а он в твоей логике таки никуда не упирается, всеми своими доводами ты от него избавиться пытаешься) //**************************** И я предпочитаю single responsibility. структурки - тупо типизация чтоб обжекты не гонять. Команда - команда, ничего более. Разве что благодаря тому что она асинхронная и ждет ответа - в нее инкапсулировали еще и обработку данных. Менеджер - не знает чем занимаются команды. Просто холдер. В его задачи входит убивать отработавшие команды или наоборот оставлять список созданных команд, чтоб не пересоздавать. Это уже от желаемой логики зависит, как там системе удобнее будет.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Цитата:
Я понял, где у нас расходятся мысли. В моём подходе – одна структура-одна команда в обоих направлениях. То есть, например есть 3 команды: "Добавить в друзья", "Посмотреть профиль", "Пригласить в мой клан" – и все 3 команды отсылают на сервер одну и ту же структуру – маленькую такую, в одное поле – user_id. В твоём случае – ты хочешь действительно слать одну и ту же структуру (дто), а вот я как раз это и считаю фейлом. Почему? Потому что это попытка агрегации кода, который агрегирован быть не должен. Если есть константа "4", указывающая на версию протокола и константа "4", показывающая максимальное количество одетых колец – то они как бы равны, но это не значит, что они как-то связаны. Так и в твоём случае твой подход тебя подведёт, когда при добавлении друга добавиться возможность уведомить его (лишний флаг notice, который не нужен в других двух командах), а при приглашении в клан указывать, какого из типов (клан рабочих/пользовательская гильдия/да всё что угодно). Создание новых Dto, расползание их внутри команд. Это не большая проблема в силу Find Usages в IDE, но я нахожу это неудобным. Поэтому я живу счастливо, интегрируя дто внутрь команды. Такие дела. Цитата:
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Цитата:
И если вдруг появятся user_params_for_invite отдельно от других - появится еще одна структурка. Но не раньше. Потому что велика вероятность что она и не появится. И вот тут вот имеет смысл включать твоего оккама Возьми вот это: - Убери из него new, так как каждый раз создавать новую структуру и не следить за ней не ок. Я предполагаю что она в каком-то буфере/холдере/манагере, который либо удалит, либо очистит, либо закеширует после выполнения. - Сделай так чтоб стартовало не со структуры, а с команды. Потому что по логике ты вызываешь якобы команду, а не данные. И не команду для данных. А В КОМАНДЕ ШЛЕШЬ ДАННЫЕ. Незачем добавлять непонятностей и неочевидностей в код. - комплит листенер - то с чего начинал ТС. То от чего я пытался уйти. Хочешь вернуть обратно - верни. получится: И в этом месте наши мнения сойдутся. //********** И я за то что если уж ООП, то лишней ненужной абстрактности добавлять незачем если для этого нет доп-мотивации. Стараюсь объекты соотносить с реальными объектами "из жизни". С логическими сущностями.
__________________
Кто к нам с чем для чего - тот у нас того от того. Последний раз редактировалось Dukobpa3; 17.01.2014 в 15:49. |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Цитата:
Цитата:
Цитата:
С коллбеками – если положить их в Dictionary с weakKeys, то даже с повисшим коллбеком не будет проблем. Но откуда он может повиснуть, если при всех ошибках этот коллбек тщательно чиститься ? Что касается конвенции – можно подписываться Event'ом, опять же с weakKey. Опять же, не смотри на addCompleteListener как какую-то законченную идею: это может быть и сигнал, и эвент. Конкретней рассматривается уже в контексте разрабатываемого приложения.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Lorem ipsum
|
Может я сейчас что-то не то скажу, но кто мешает пользоваться обычным URLLoader и словарем, где ключ — наш лоадер, а значение — необходимая идентификация пришедшего COMPLETE, например "вот это он ответил с какого он раёна", "а вот это он ответил почему такой дерзкий".
__________________
Поймай яблоко 2! |
|
|||||
Цитата:
Цитата:
|
|
|||||
Lorem ipsum
|
Оу. Надо же, последний камент от Psycho Tiger невнимательно прочел )) он о том же.
__________________
Поймай яблоко 2! |
Часовой пояс GMT +4, время: 16:28. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|