Example #1
0
        static void Main(string[] args)
        {
            IceCream iceCream = new Vanilla();


            iceCream = new Sprinkle(iceCream);

            iceCream = new Fudge(iceCream);


            Console.WriteLine(iceCream.Cost());

            Console.ReadKey();
        }
Example #2
0
        static void Main(string[] args)
        {
            // Que problema ele resolve?
            // Anexar responsabilidades adicionais a um objeto dinamicamente.
            // Decoradores fornecem uma alternativa flexível para subclasse para ampliar a
            // funcionalidade.

            //Fontes:
            // https://sourcemaking.com/design_patterns/decorator
            // https://www.youtube.com/watch?v=nk9Z1vwO3RI


            IceCream iceCream = new Chocolate();

            iceCream = new Sprinkle(iceCream);
            iceCream = new Fudge(iceCream);

            Console.WriteLine(iceCream.Cost());
            Console.ReadKey();
        }
Example #3
0
        public static void CallDecoratorPattern()
        {
            IceCream iceCreamChocolate = new Chocolate();

            iceCreamChocolate = new Sprinkle(iceCreamChocolate);
            iceCreamChocolate = new Fudge(iceCreamChocolate);

            Console.WriteLine("Chocolate Ice Cream with Sprinkles, Fudge = " + iceCreamChocolate.Cost().ToString("C"));

            IceCream iceCreamVanilla = new Vanilla();

            iceCreamVanilla = new Sprinkle(iceCreamVanilla);
            iceCreamVanilla = new Fudge(iceCreamVanilla);
            iceCreamVanilla = new Caramel(iceCreamVanilla);
            iceCreamVanilla = new WhipCream(iceCreamVanilla);
            iceCreamVanilla = new WaffleCone(iceCreamVanilla);

            Console.WriteLine("Vanilla Ice Cream with Sprinkles, Fudge, Caramel, WhipCream, WaffleCone = " + iceCreamVanilla.Cost().ToString("C"));

            Console.ReadKey();
        }