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