public Board(int size, IPatternFactory patternsFactory) { if (size <= 0) { throw new ArgumentException("invalid board size"); } Size = size; WinningPatterns = patternsFactory.Create(size); Coordinates = new BoardCoordinate[size * size]; for (int i = 0; i < Coordinates.Length; i++) { Coordinates[i] = this.ToCoordinate(i + 1); } }