Показать сообщение отдельно
Старый 16.01.2014, 18:53
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 43  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
Ну гм, тогда я тебя не понимаю.
Сожмём твой код:
Код AS3:
var turnDto:BattleTurnDto = new BattleTurnDto();
turnDto.battle_id = "1";
turnDto.unit_id = "10";
CommandManager.executeCommand(CommandList.COMMAND_BATTLE_TURN, turnDto);
Внесём в конструктор то, что ты вставляешь сеттерами (филдами?).
Код AS3:
var turnDto:BattleTurnDto = new BattleTurnDto(1, 10);
CommandManager.executeCommand(CommandList.COMMAND_BATTLE_TURN, turnDto);
У нас обоих в наших реализациях один запрос – одна команда. Поэтому я вышвыриваю CommandList.COMMAND_BATTLE_TURN из этого кода, внося её в конструктор BattleTurnDto. Зачем? Это DRY. Типа
Код AS3:
public function BattleTurnDto(battleID:int, unitID:int){
super();
super.commandName = CommandList.COMMAND_BATTLE_TURN;
}
Поэтому код сжался вот так:
Код AS3:
var turnDto:BattleTurnDto = new BattleTurnDto(1, 10);
CommandManager.executeCommand(turnDto);
Теперь я прикидываю, что всегда создавая команду я буду её отправлять. Через CommandManager. Это опять же значит, что я могу создать метод execute() внутри BaseCommand, который будет исполнять вот эту строчку:
Код AS3:
CommandManager.executeCommand(turnDto);
(в реальном коде это будет выглядеть как-то так)
Код AS3:
public function execute():void{
CommandManager.executeCommand(super.commandName, this);
}
Ну и, конечно, после её исполнения надо где-то обработать ответ. Обычно я делаю это внутри самой команды: она сама находит нужные модели, расфасовывает данные и прочее, но иногда удобно получить коллбек о том, что команда исполнена в пользовательском коде. Добавляется листенер addCompleteHandler.
Вот так рождается строчка:
Код AS3:
new BattleTurnDto().executeCommand().addCompleteListener(completeHandler);
На каком шаге это сжатие кода превращает примерно-нормальный в код Александра?