public ForwardBackwardMovementStrategy(MovementCommand command, IObstacleProvider obstacleProvider,
                                               IBoundaryAdjuster boundaryAdjuster, IPositionProvider positionProvider)
        {
            _obstacleProvider = obstacleProvider ?? throw new ArgumentNullException(nameof(obstacleProvider));
            _boundaryAdjuster = boundaryAdjuster ?? throw new ArgumentNullException(nameof(boundaryAdjuster));
            _positionProvider = positionProvider ?? throw new ArgumentNullException(nameof(positionProvider));

            _defaultSpacesToMove = command switch
            {
                MovementCommand.Forward => 1,
                MovementCommand.Backward => - 1,
                _ => throw new InvalidOperationException(
                          $"Could not set default spaces to move for command type: {command}.")
            };
        }
 public MovementStrategyFactory(IObstacleProvider obstacleProvider, IBoundaryAdjuster boundaryAdjuster, IPositionProvider positionProvider)
 {
     _obstacleProvider = obstacleProvider ?? throw new ArgumentNullException(nameof(obstacleProvider));
     _boundaryAdjuster = boundaryAdjuster ?? throw new ArgumentNullException(nameof(boundaryAdjuster));
     _positionProvider = positionProvider ?? throw new ArgumentNullException(nameof(positionProvider));
 }