Exemplo n.º 1
0
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            Milk milk = new Milk(100000, 3.4);

            Agregat agregat = new CreamAgregat(2);
            Factory factory = new CreamFactory(agregat);

            var(cream, sideProducts) = factory.ProduceProducts(milk);


            if (cream == null)
            {
                throw new Exception("нет сливок");
            }

            var obrat = new Obrat();

            foreach (var sideProduct in sideProducts)
            {
                obrat = sideProduct as Obrat;
            }

            if (!(obrat != null))
            {
                agregat = new CheeseAgregat(3);
                factory = new CheeseFactory(agregat);
                var(cheese, sideProductsFromCheese) = factory.ProduceProducts(obrat);
                Console.WriteLine($"Cheese. Value:{cheese.Value}, Percentage:{cheese.MilkPercentage}");
            }

            Console.WriteLine($"Cream. Value:{cream.Value}, Percentage:{cream.MilkPercentage}");

            agregat = new ButterAgregat(10);
            factory = new ButterFactory(agregat);
            var(butter, sideProductsFromCream) = factory.ProduceProducts(cream);

            if (butter == null)
            {
                throw new Exception("нет масла");
            }

            Console.WriteLine($"Butter. Value:{butter.Value}, Percentage:{butter.MilkPercentage}");

            Console.ReadKey();
        }
Exemplo n.º 2
0
        public override (MilkProduct mainProduct, List <MilkProduct> sideProducts) Transform(MilkProduct ingredients)
        {
            double valueNewProd         = ingredients.Value / OutputRate;
            double milkPercetageNewProd = ingredients.Value * ingredients.MilkPercentage / valueNewProd;
            string productName          = typeof(Cream).Name;

            var mainProduct = new Cream
            {
                Name           = typeof(Cream).Name,
                Value          = ingredients.Value / OutputRate,
                MilkPercentage = milkPercetageNewProd
            };

            var sideProduct  = new Obrat();
            var sideProducts = new List <MilkProduct> {
                sideProduct
            };

            var products = (mainProduct : mainProduct, sideProducts : sideProducts);

            return(products);
        }