44 lines
1.3 KiB
C#
44 lines
1.3 KiB
C#
using Numbers.NumberFactory.NumberImpls;
|
|
|
|
namespace Numbers.NumberFactory;
|
|
|
|
/// <summary>
|
|
/// A factory that creates <see cref="INumbers" /> instances
|
|
/// </summary>
|
|
public static class Factory
|
|
{
|
|
/// <summary>
|
|
/// Creates an <see cref="INumbers" /> instance for the given <paramref name="type" />
|
|
/// </summary>
|
|
/// <param name="type">Number factory type to create</param>
|
|
/// <param name="lowerBound">Lower bound of the number range</param>
|
|
/// <param name="upperBound">Upper bound of the number range</param>
|
|
/// <returns>Appropriate instance or null if requested type is unknown</returns>
|
|
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!;
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Possible number factory types
|
|
/// </summary>
|
|
public enum NumberType
|
|
{
|
|
Even,
|
|
Odd,
|
|
Square,
|
|
Prime
|
|
}
|