Как правильно работать с логикой «один, оба или нет»?

У меня есть логическая ситуация, которую лучше всего описать как две «команды», пытающиеся выиграть задачу. Результатом этой задачи может быть единственный победитель, ничья (ничья) или отсутствие победителя (патовая ситуация).

В настоящее время я использую вложенный оператор if / else, например:

// using PHP, but the concept seems language agnostic.
if ($team_a->win()) {
    if ($team_b->win()) {
        //  this is a draw
    } else {
        //  team_a is the winner
    }
} else {
    if ($team_b->win()) { 
        //  team_b is the winner
    } else {
        //  This is a stalemate, no winner.
    }
}

Это кажется довольно спагетти- нравится и повторяется. Есть ли более логичный шаблон DRY, который я мог бы использовать?

5
задан Stephen 23 December 2010 в 23:40
поделиться