using Numbers.NumberFactory.NumberImpls;
namespace Numbers.NumberFactory;
///
/// A factory that creates instances
///
public static class Factory
{
///
/// Creates an instance for the given
///
/// Number factory type to create
/// Lower bound of the number range
/// Upper bound of the number range
/// Appropriate instance or null if requested type is unknown
public static INumbers Create(NumberType type, long lowerBound, long upperBound)
{
switch (type)
{
case NumberType.Even:
return new EvenNumbers(lowerBound, upperBound);
case NumberType.Odd:
return new OddNumbers(lowerBound, upperBound);
case NumberType.Prime:
return new PrimeNumbers(lowerBound, upperBound);
case NumberType.Square:
return new SquareNumbers(lowerBound, upperBound);
default:
return null!;
}
}
}
///
/// Possible number factory types
///
public enum NumberType
{
Even,
Odd,
Square,
Prime
}