public TennisMatch(ITournamentRules tournamentRules, Func<TennisMatch, IMatchState> matchStateFactory) : base(new Party("A"), new Party("B")) { _tournamentRules = tournamentRules; _matchState = matchStateFactory(this); _currentSet = _matchState.GetNextSet(tournamentRules); }