ex-int-05-numbers/Numbers/NumberFactory/Factory.cs
2025-05-10 22:58:56 +02:00

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
}