예제 #1
0
        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);
        }
예제 #2
0
 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);
 }
예제 #3
0
 public AzucarDecorator(IPlatillo platillo) : base(platillo)
 {
 }
예제 #4
0
 public CarneDecorator(IPlatillo platillo) : base(platillo)
 {
 }
예제 #5
0
 public CuchilloDecorator(IPlatillo platillo) : base(platillo)
 {
 }
예제 #6
0
 public TenedorDecorator(IPlatillo platillo) : base(platillo)
 {
 }
예제 #7
0
 public SalDecorator(IPlatillo platillo) : base(platillo)
 {
 }
예제 #8
0
 public PolloDecorator(IPlatillo platillo) : base(platillo)
 {
 }
예제 #9
0
 public PlatilloDecorator(IPlatillo platillo)
 {
     this.platillo = platillo;
 }