Ejemplo n.º 1
0
        public override SubwaySandwich CreateSandwich(TypeOfSubway subway)
        {
            ISubwayRecipeFactory recipeFactory = new ColombianSubwayRecipeFactory();
            var typeObject = Type.GetType($"AbstractFactoryApp.SubwayFactory.Recipies.{Enum.GetName(typeof(TypeOfSubway), subway)}Subway");

            return((SubwaySandwich)Activator.CreateInstance(typeObject, recipeFactory));
        }
Ejemplo n.º 2
0
        public SubwaySandwich OrderSandwich(TypeOfSubway subway, TypeOfBread bread, BreadSize size)
        {
            var subwayRecipe = CreateSandwich(subway);

            subwayRecipe.Prepare(subway, bread, size);

            return(subwayRecipe);
        }
Ejemplo n.º 3
0
 public override void Prepare(TypeOfSubway subway, TypeOfBread bread, BreadSize size)
 {
     RecipeName = "Veggie Delite";
     Bread      = bread;
     Size       = size;
     Proteins   = subwayRecipe.ChooseProteins(subway);
     Cheeses    = subwayRecipe.AddCheese(subway);
     Veggies    = subwayRecipe.AddVeggies(subway);
     Sauces     = subwayRecipe.AddSauces(subway);
 }
Ejemplo n.º 4
0
 public override void Prepare(TypeOfSubway subway, TypeOfBread bread, BreadSize size)
 {
     RecipeName = "Sweet Onion Chicken Teriyaki";
     Bread      = bread;
     Size       = size;
     Proteins   = subwayRecipe.ChooseProteins(subway);
     Cheeses    = subwayRecipe.AddCheese(subway);
     Veggies    = subwayRecipe.AddVeggies(subway);
     Sauces     = subwayRecipe.AddSauces(subway);
 }
Ejemplo n.º 5
0
        public List <CheeseType> AddCheese(TypeOfSubway subway)
        {
            var lstChees = new List <CheeseType>();

            switch (subway)
            {
            case TypeOfSubway.BbqRib:
            case TypeOfSubway.ColdCutCombo:
                lstChees.Add(CheeseType.Provolone);
                break;

            case TypeOfSubway.ChickenBaconRanchMelt:
            case TypeOfSubway.SpicyItalian:
            case TypeOfSubway.TurkeyBreast:
                lstChees.Add(CheeseType.Cheddar);
                break;

            case TypeOfSubway.ClassicTuna:
            case TypeOfSubway.SweetOnionChickenTeriyaki:
                lstChees.Add(CheeseType.Parmesan);
                break;

            case TypeOfSubway.ItalianBMT:
            case TypeOfSubway.MeatballMarinara:
                lstChees.Add(CheeseType.Swiss);
                break;

            case TypeOfSubway.OvenRoastedChicken:
            case TypeOfSubway.SteakCheese:
            case TypeOfSubway.VeggieDelite:
            case TypeOfSubway.BlackForestHam:
                lstChees.Add(CheeseType.Mozzarella);
                break;
            }
            return(lstChees);
        }
Ejemplo n.º 6
0
        public List <ISauce> AddSauces(TypeOfSubway subway)
        {
            var lstSauces = new List <ISauce>();

            switch (subway)
            {
            case TypeOfSubway.BbqRib:
                lstSauces.Add(new Barbecue());
                lstSauces.Add(new TangyPickles());
                lstSauces.Add(new Chippotle());
                break;

            case TypeOfSubway.BlackForestHam:
                lstSauces.Add(new TangyPickles());
                lstSauces.Add(new SweetOnion());
                break;

            case TypeOfSubway.ChickenBaconRanchMelt:
                lstSauces.Add(new Ranch());
                lstSauces.Add(new SweetOnion());
                break;

            case TypeOfSubway.ClassicTuna:
                lstSauces.Add(new Mayonnaise());
                break;

            case TypeOfSubway.ColdCutCombo:
            case TypeOfSubway.ItalianBMT:
                lstSauces.Add(new SweetOnion());
                lstSauces.Add(new Chippotle());
                break;

            case TypeOfSubway.MeatballMarinara:
                lstSauces.Add(new Tomato());
                lstSauces.Add(new Chippotle());
                break;

            case TypeOfSubway.OvenRoastedChicken:
                lstSauces.Add(new SweetOnion());
                lstSauces.Add(new Barbecue());
                lstSauces.Add(new Chippotle());
                break;

            case TypeOfSubway.SpicyItalian:
                lstSauces.Add(new Ranch());
                lstSauces.Add(new Chippotle());
                break;

            case TypeOfSubway.SteakCheese:
                lstSauces.Add(new Mayonnaise());
                lstSauces.Add(new Chippotle());
                break;

            case TypeOfSubway.SweetOnionChickenTeriyaki:
                lstSauces.Add(new SweetOnion());
                lstSauces.Add(new Marinara());
                break;

            case TypeOfSubway.TurkeyBreast:
            case TypeOfSubway.VeggieDelite:
                lstSauces.Add(new SweetOnion());
                lstSauces.Add(new Chippotle());
                break;
            }
            return(lstSauces);
        }
Ejemplo n.º 7
0
        public List <IProtein> ChooseProteins(TypeOfSubway subway)
        {
            var lstProteins = new List <IProtein>();

            switch (subway)
            {
            case TypeOfSubway.BbqRib:
                lstProteins.Add(new Rib());
                break;

            case TypeOfSubway.BlackForestHam:
                lstProteins.Add(new BlackForestHam());
                lstProteins.Add(new Ham());
                break;

            case TypeOfSubway.ChickenBaconRanchMelt:
                lstProteins.Add(new ChickenStrips());
                lstProteins.Add(new Bacons());
                break;

            case TypeOfSubway.ClassicTuna:
                lstProteins.Add(new Tuna());
                break;

            case TypeOfSubway.ColdCutCombo:
                lstProteins.Add(new TurkeyHam());
                lstProteins.Add(new Bologna());
                lstProteins.Add(new TurkeySalami());
                break;

            case TypeOfSubway.ItalianBMT:
                lstProteins.Add(new Salami());
                lstProteins.Add(new SpicyPepperoni());
                lstProteins.Add(new BlackForestHam());
                break;

            case TypeOfSubway.MeatballMarinara:
                lstProteins.Add(new Meatball());
                break;

            case TypeOfSubway.OvenRoastedChicken:
                lstProteins.Add(new SavoryChickenBreast());
                break;

            case TypeOfSubway.SpicyItalian:
                lstProteins.Add(new SpicyPepperoni());
                lstProteins.Add(new Salami());
                break;

            case TypeOfSubway.SteakCheese:
                lstProteins.Add(new Steak());
                break;

            case TypeOfSubway.SweetOnionChickenTeriyaki:
                lstProteins.Add(new ChickenStrips());
                break;

            case TypeOfSubway.TurkeyBreast:
                lstProteins.Add(new TurkeyHam());
                break;

            case TypeOfSubway.VeggieDelite:
                lstProteins.Add(new NoProtein());
                break;
            }

            return(lstProteins);
        }
Ejemplo n.º 8
0
        public List <IVeggie> AddVeggies(TypeOfSubway subway)
        {
            var lstVeggies = new List <IVeggie>();

            switch (subway)
            {
            case TypeOfSubway.BbqRib:
            case TypeOfSubway.BlackForestHam:
                lstVeggies.Add(new CrispLettuce());
                lstVeggies.Add(new Tomatoes());
                lstVeggies.Add(new Cucumbers());
                break;

            case TypeOfSubway.ChickenBaconRanchMelt:
            case TypeOfSubway.ColdCutCombo:
            case TypeOfSubway.ItalianBMT:
                lstVeggies.Add(item: new Lettuce());
                lstVeggies.Add(new Tomatoes());
                lstVeggies.Add(new Onions());
                break;

            case TypeOfSubway.ClassicTuna:
                lstVeggies.Add(new Lettuce());
                lstVeggies.Add(new Cucumbers());
                lstVeggies.Add(new Tomatoes());
                lstVeggies.Add(new Onions());
                break;

            case TypeOfSubway.MeatballMarinara:
                lstVeggies.Add(new Tomatoes());
                break;

            case TypeOfSubway.OvenRoastedChicken:
                lstVeggies.Add(item: new Lettuce());
                lstVeggies.Add(new Tomatoes());
                lstVeggies.Add(new Onions());
                lstVeggies.Add(new Cucumbers());
                break;

            case TypeOfSubway.SpicyItalian:
                lstVeggies.Add(item: new Lettuce());
                lstVeggies.Add(new Tomatoes());
                lstVeggies.Add(new Onions());
                lstVeggies.Add(new GreenPeppers());
                break;

            case TypeOfSubway.SteakCheese:
                lstVeggies.Add(new GreenPeppers());
                lstVeggies.Add(new Onions());
                break;

            case TypeOfSubway.SweetOnionChickenTeriyaki:
            case TypeOfSubway.TurkeyBreast:
            case TypeOfSubway.VeggieDelite:
                lstVeggies.Add(new Lettuce());
                lstVeggies.Add(new Tomatoes());
                lstVeggies.Add(new GreenPeppers());
                lstVeggies.Add(new Spinach());
                lstVeggies.Add(new Onions());
                lstVeggies.Add(new Cucumbers());
                break;
            }

            return(lstVeggies);
        }
Ejemplo n.º 9
0
 public abstract void Prepare(TypeOfSubway subway, TypeOfBread bread, BreadSize size);
Ejemplo n.º 10
0
 public abstract SubwaySandwich CreateSandwich(TypeOfSubway subway);