Задать вопрос
@Oxoron
Шарпер

Как лучше преобразовать фабричный метод?

Добрый день.
Есть программа на .NET, реализует пошаговую многопользовательскую игру. В ней класс Game, с событиями GameStateChanged, GameEnded.
Игра создается так:
CurrentGame = GameFactory.CreateGame(_gameMeta, activePlayer, true); 
CurrentGame.GameEnded += OnCurrentGameEnded;
CurrentGame.GameStateChanged += OnCurrentGameStateChaged;

_gameMeta - число игроков, тип (человек\бот); activePlayer - индекс ходящего игрока; true - создать ботов.

При игре хотя бы с одним человеком - все хорошо. При игре только ботов - бессмысленно подписываться на события CurrentGame. При создании игры она моментально стартует, и коннект на событие происходит уже после её (игры) окончания. Как лучше поступить - выкинуть из фабричного метода запуск игры, или передавать ему в качестве аргументов (необязательных) делегаты, которые тот будет крепить к событиям?
  • Вопрос задан
  • 2362 просмотра
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 2
    1 неделя
    Далее
Решения вопроса 1
@mayorovp
Правильный способ - выкинуть обязательный запуск игры. Например, добавив именованный параметр со значением по умолчанию.

Передача делегатов в фабричный метод - это уже крайний случай, если дошло до такого - пора менять архитектуру кода, уходя от событий.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы