Проект: Менеджер Чемпионата (футбол)
Проблема: Слишком динамичный и большой выбор режимов игры.
Описание: Проблема в том что выбор режимов огромный т.е процесса как именно проходит чемпионат.
Тут присутствует 40 режимов, вот несколько из них:
1 Группа (все против всех)
1 Группа - Лига - все против всех - несколько дней
2 Группы - Полуфинал - Матч за места 3, 1
2 Группы - Полуфинал - Матч для мест 5, 3, 1
2 Группы - Полуфинал - Матч для мест 7, 5, 3, 1
2 Группы - Полуфинал - Все места - Финал
2 Группы - Малый полуфинал - Полуфинал - Все места - Финал
2 Группы - Четвертьфинал - Полуфинал - Матч за 3-е место - Финал
По сути все эти режимы взяты из данного сайта https://www.meinturnierplan.de/ там можно войти как гость и пройти процесс создания турнира. Мой “клиент” использует эту платформу, но теперь хочет создать свою платформу.
Я не особо долго в разработке программ и мне сложно найти хорошее решение данной проблемы. Мой коллега по работе посоветовал мне создать что-то типа интерфейсов, но я честно говоря не пойму как именно. Он дал мне вот такой пример:
class Tournament(object): def handle_play(self, team1, team2): pass modes = { 'mode_1': Mode1Tournament, 'mode_2': Mode2Tournament, } class Mode1Tournament(Tournament): def handle_play(self, team1, team2): pass # do something with team1 and team2 according to # "tournament rules for mode1". (feel free to find a better name than Mode1) class Mode2Tournament(Tournament): def handle_play(self, team1, team2): pass # do something with team1 and team2 according to # "tournament rules for mode2". (feel free to find a better name than Mode2) Tournament.modes['mode_1']()
Т.е при помощи
Tournament.modes['mode_1']()
И вот моя схема базы данных.
Вопрос: Как написать метод который будет учитывать количество команд и выбранный режим. И если предложенный мною в примере вариант является наилучшим выходом из данной ситуации прошу показать пример как это имплементировать, так как я примеров в интернете не нашел.