public static IPlatillo GenerarPlatillo(Platillos tipo, List <Opciones> opciones) { IPlatillo platilloBase; platilloBase = tipo switch { Platillos.PlatilloFuerte => new PlatilloFuerte(), Platillos.Ensalada => new Ensalada(), Platillos.Sopa => new Sopa(), Platillos.Postre => new Postre(), Platillos.Bebida => new Bebida(), _ => null, }; IPlatillo platillo = null; foreach (var opcion in opciones) { if (platillo != null) { platillo = Generar(opcion, platillo); continue; } switch (opcion) { case Opciones.Pollo: platillo = new PolloDecorator(platilloBase); break; case Opciones.Sal: platillo = new SalDecorator(platilloBase); break; case Opciones.Cuchara: platillo = new CucharaDecorator(platilloBase); break; case Opciones.Tenedor: platillo = new TenedorDecorator(platilloBase); break; case Opciones.Cuchillo: platillo = new CuchilloDecorator(platilloBase); break; case Opciones.Carne: platillo = new CarneDecorator(platilloBase); break; case Opciones.Azucar: platillo = new AzucarDecorator(platilloBase); break; } } return(platillo); }
public static IPlatillo Generar(Opciones opciones, IPlatillo aDecorar) { aDecorar = opciones switch { Opciones.Pollo => new PolloDecorator(aDecorar), Opciones.Sal => new SalDecorator(aDecorar), Opciones.Cuchara => new CucharaDecorator(aDecorar), Opciones.Tenedor => new TenedorDecorator(aDecorar), Opciones.Cuchillo => new CuchilloDecorator(aDecorar), Opciones.Carne => new CarneDecorator(aDecorar), Opciones.Azucar => new AzucarDecorator(aDecorar), _ => null, }; return(aDecorar); }
public AzucarDecorator(IPlatillo platillo) : base(platillo) { }
public CarneDecorator(IPlatillo platillo) : base(platillo) { }
public CuchilloDecorator(IPlatillo platillo) : base(platillo) { }
public TenedorDecorator(IPlatillo platillo) : base(platillo) { }
public SalDecorator(IPlatillo platillo) : base(platillo) { }
public PolloDecorator(IPlatillo platillo) : base(platillo) { }
public PlatilloDecorator(IPlatillo platillo) { this.platillo = platillo; }