Использовать команды. Оберните действие в объект и пусть полиморфизм сделает для вас переключатель. В C ++ (shared_ptr
- это просто указатель или ссылка на языке Java. Это позволяет динамическую отправку):
void GameServer::perform_action(shared_ptr<Action> op) {
op->execute();
}
Клиенты выбирают действие для выполнения, и как только они отправляют это действие на сервер, поэтому серверу не нужно выполнять синтаксический анализ:
void BlueClient::play() {
shared_ptr<Action> a;
if( should_move() ) a = new Move(this, NORTHWEST);
else if( should_attack() ) a = new Attack(this, EAST);
else a = Wait(this);
server.perform_action(a);
}