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 }