Ejemplo n.º 1
0
        public static IFizzBuzzEngine Create(FizzBuzzRuleSet ruleSet)
        {
            IFizzBuzzSolverFactory factory = new FizzBuzzSolverFactory();
            IFizzBuzzSolver        solver  = factory.GetSolver(ruleSet);

            return(new FizzBuzzEngine(solver));
        }
Ejemplo n.º 2
0
        public static IFizzBuzzEngine Create(FizzBuzzRuleSet ruleSet)
        {
            switch (ruleSet)
            {
            case FizzBuzzRuleSet.FizzBuzzBoomBangCrashDivisible:
                return(new FizzBuzzBoomBangCrashDivisible());

            case FizzBuzzRuleSet.FizzBuzzDigits:
                return(new FizzBuzzDigits());

            case FizzBuzzRuleSet.FizzBuzzDivisible:
                return(new FizzBuzzDivisible());

            case FizzBuzzRuleSet.FizzBuzzDivisibleOrDigits:
                return(new FizzBuzzDivisibleOrDigits());
            }
            throw new NotImplementedException("This ruleset has not been implemented");
        }
Ejemplo n.º 3
0
        // TODO: when FizzBuzzEngineFactory is gone,
        // refactor to GetSolver<FizzBuzzRuleSet>()
        // and use service locator to resolve other dependencies.
        public IFizzBuzzSolver GetSolver(FizzBuzzRuleSet ruleSet)
        {
            IFizzBuzzSolver solver = null;

            switch (ruleSet)
            {
            /// <summary>
            /// The standard game - based on the divisibility of a number.
            /// </summary>
            case FizzBuzzRuleSet.FizzBuzzDivisible:
                solver = new FizzBuzzDivisibleSolver();
                break;

            /// <summary>
            /// The standard game with additional substitutions for divisibility.
            /// </summary>
            case FizzBuzzRuleSet.FizzBuzzBoomBangCrashDivisible:
                solver = new FizzBuzzCrashDivisbleSolver();
                break;

            /// <summary>
            /// A game based on the digits contained in a number.
            /// </summary>
            case FizzBuzzRuleSet.FizzBuzzDigits:
                solver = new FizzBuzzDigitsSolver();
                break;

            /// <summary>
            /// A combination of FizzBuzzDivisible and FizzBuzzDigits.
            /// </summary>
            case FizzBuzzRuleSet.FizzBuzzDivisibleOrDigits:
                solver = new FizzBuzzDivisibleOrDigitsSolver(new FizzBuzzDivisibleSolver(), new FizzBuzzDigitsSolver());
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(ruleSet), $"{ruleSet} is not a handled {nameof(ruleSet)}");                 // <-- ASSUME: C# 7 compiler
            }
            return(solver);
        }
Ejemplo n.º 4
0
 //Simply taking the enum and finding the corresponding object in dictionay
 public static IFizzBuzzEngine Get(FizzBuzzRuleSet ruleSet)
 {
     return(FizzBuzzEngineCreators[ruleSet]());
 }