public void ShowPattern()
        {
            Beverage beverage1 = new Espresso();
            beverage1 = new Mocha(beverage1);
            beverage1 = new Mocha(beverage1);
            beverage1 = new Whip(beverage1);

            var desc = beverage1.GetDescription();
            var total = beverage1.Cost();
        }
예제 #2
0
        static void Main(string[] args)
        {
            Beverage beverage = new Espresso();

            Console.WriteLine($"{beverage.GetDescription()} : {beverage.Cost()}");

            //New beverage
            //Wrap it with a mocha, second mocha and then whip
            Beverage beverage2 = new Espresso();

            beverage2 = new Mocha(beverage2);
            beverage2 = new Mocha(beverage2);
            beverage2 = new Whip(beverage2);
            Console.WriteLine($"{beverage2.GetDescription()} : {beverage2.Cost()}");
        }
예제 #3
0
        static void Main(string[] args)
        {
            Beverage beverage = new Espresso();

            Console.WriteLine($"{beverage.GetDescription()} ${beverage.Cost()}");

            Beverage beverage1 = new HouseBlend();

            beverage1 = new Soy(beverage1);
            beverage1 = new Mocha(beverage1);
            beverage1 = new Mocha(beverage1);
            Console.WriteLine($"{beverage1.GetDescription()} ${beverage1.Cost()}");

            Console.ReadLine();
        }
예제 #4
0
        static void Main(string[] args)
        {
            Bevarage bevarage = new Espresso();

            Console.WriteLine("{0} ${1}", bevarage.Description, bevarage.Cost().ToString());

            bevarage = new DarkRoast();

            bevarage = new Mocha(bevarage);



            Console.WriteLine("{0} ${1}", bevarage.Description, bevarage.Cost().ToString());

            Console.ReadLine();
        }
예제 #5
0
        public static void RunStarBuck()
        {
            Console.WriteLine("StarBuck Coffe Order: ");

            Beverage beverage = new Espresso();

            Console.WriteLine(string.Format("{0} : ${1}", beverage.GetDescription(), beverage.GetCost()));

            Beverage beverage2 = new DarkRoast();

            beverage2 = new Mocha(beverage2);
            beverage2 = new SteamMilk(beverage2);
            beverage2 = new Whip(beverage2);

            Console.WriteLine(string.Format("{0} : ${1}", beverage2.GetDescription(), beverage2.GetCost()));
        }
예제 #6
0
        static void Main(string[] args)
        {
            BeverageBase capuccino     = new Capuccino();
            BeverageBase tea           = new Tea();
            BeverageBase hot_chololate = new HotChocolate();
            BeverageBase espresso      = new Espresso();


            List <BeverageBase> beverage_list = new List <BeverageBase>();

            beverage_list.Add(capuccino);
            beverage_list.Add(tea);
            beverage_list.Add(hot_chololate);
            beverage_list.Add(espresso);


            foreach (BeverageBase beverage in beverage_list)
            {
                Console.WriteLine("Beverage: {0}, price: {1}", beverage.GetDescription(), beverage.GetPrice());
                Console.WriteLine();
            }



            Console.WriteLine("______________________________");



            BeverageBase green_tea = new GreenTea();


            BeverageBase capuccino2 = new AdditionSugar(new AdditionMilk(new Espresso()));


            beverage_list.Add(capuccino2);


            foreach (BeverageBase beverage in beverage_list)
            {
                Console.WriteLine("Beverage: {0}, price: {1}", beverage.GetDescription(), beverage.GetPrice());
                Console.WriteLine();
            }



            Console.ReadKey();
        }
예제 #7
0
        static void Main(string[] args)
        {
            Beverage beverage = new Espresso();

            Console.WriteLine(beverage.GetDescription() + " $" + beverage.Cost());

            Beverage beverage2 = new HouseBlend();

            beverage2 = new Mocha(beverage2);
            beverage2 = new Soy(beverage2);
            beverage2 = new Whip(beverage2);
            Console.WriteLine(beverage2.GetDescription() + " $" + beverage2.Cost());

            Beverage beverage3 = new DarkRoase();

            beverage3 = new Mocha(beverage3);
            beverage3 = new Mocha(beverage3);
            beverage3 = new Whip(beverage3);
            Console.WriteLine(beverage3.GetDescription() + " $" + beverage3.Cost());

            //Console.ReadLine();
            Console.WriteLine("---------------------\n");

            // 我买了个苹果手机
            Phone phone = new ApplePhone();
            // 现在想贴膜了
            Decorator applePhoneWithSticker = new Sticker(phone);

            // 扩展贴膜行为
            applePhoneWithSticker.Print();
            Console.WriteLine("----------------------\n");

            // 现在我想有挂件了
            Decorator applePhoneWithAccessories = new Accessories(phone);

            // 扩展手机挂件行为
            applePhoneWithAccessories.Print();
            Console.WriteLine("----------------------\n");

            // 现在我同时有贴膜和手机挂件了
            Sticker     sticker = new Sticker(phone);
            Accessories applePhoneWithAccessoriesAndSticker = new Accessories(sticker);

            applePhoneWithAccessoriesAndSticker.Print();

            Console.ReadLine();
        }
예제 #8
0
        static void Main(string[] args)
        {
            Beverage.Beverage espresso = new Espresso();
            Console.WriteLine($"{espresso.GetDescription()}, ${espresso.Cost()}");

            Beverage.Beverage soyHouseBlend = new HouseBlend();
            soyHouseBlend = new Soy(soyHouseBlend);
            Console.WriteLine($"{soyHouseBlend.GetDescription()}, ${soyHouseBlend.Cost()}");

            Beverage.Beverage doubleMochaWithWhipInDarkRoast = new DarkRoast();
            doubleMochaWithWhipInDarkRoast = new Mocha(doubleMochaWithWhipInDarkRoast);
            doubleMochaWithWhipInDarkRoast = new Mocha(doubleMochaWithWhipInDarkRoast);
            doubleMochaWithWhipInDarkRoast = new Whip(doubleMochaWithWhipInDarkRoast);

            Console.WriteLine($"{doubleMochaWithWhipInDarkRoast.GetDescription()}, ${doubleMochaWithWhipInDarkRoast.Cost()}");
            Console.ReadKey();
        }
예제 #9
0
        static void Main(string[] args)
        {
            Drink drink = new Espresso()
            {
                Description = "Expresso"
            };

            Console.WriteLine(drink.Description);

            drink = new SecretIngredient(drink);
            Console.WriteLine(drink.Description);

            drink = new Ice(drink);
            Console.WriteLine(drink.Description);

            Console.ReadKey();
        }
예제 #10
0
        static void Main(string[] args)
        {
            Beverage beverage = new Espresso();

            Console.WriteLine("{0} ${1}", beverage.GetDescription(), beverage.Cost());
            beverage.SetSize(3);
            Console.WriteLine("{0} ${1}", beverage.GetDescription(), beverage.Cost());

            Beverage beverage2 = new Mocha(beverage);
            Console.WriteLine("{0} ${1}", beverage2.GetDescription(), beverage2.Cost());
            beverage2 = new Mocha(beverage2);
            Console.WriteLine("{0} ${1}", beverage2.GetDescription(), beverage2.Cost());

            beverage2.SetSize(2);
            Console.WriteLine("{0} ${1}", beverage2.GetDescription(), beverage2.Cost());
            Console.ReadKey();
        }
예제 #11
0
        public static void Start()
        {
            IBeverage beverage = new Espresso(BeverageSize.TALL);

            Console.WriteLine($"{beverage.Description} ${beverage.Cost()}");

            IBeverage beverage2 = new Whip(new Mocha(new Mocha(new DarkRoast(BeverageSize.GRANDE))));

            Console.WriteLine($"{beverage2.Description} ${beverage2.Cost()}");

            IBeverage beverage4 = new HouseBlend(BeverageSize.VENTI);

            beverage4 = new Soy(beverage4);
            beverage4 = new Mocha(beverage4);
            beverage4 = new Whip(beverage4);

            Console.WriteLine($"{beverage4.Description} ${beverage4.Cost()}");
        }
예제 #12
0
        static void Main()
        {
            Beverage beverage1 = new DarkRoast();

            Beverage beverage2 = new Espresso();

            beverage2 = new Milk(beverage2);

            Beverage beverage3 = new DarkRoast();

            beverage3 = new Milk(beverage3);
            beverage3 = new Whip(beverage3);

            Console.WriteLine(beverage1.GetDescription() + "\n" + beverage1.Cost());
            Console.WriteLine(beverage2.GetDescription() + "\n" + beverage2.Cost());
            Console.WriteLine(beverage3.GetDescription() + "\n" + beverage3.Cost());

            Console.ReadKey();
        }
예제 #13
0
        static void Decorator()
        {
            Beverage beverage1 = new Espresso();

            Console.WriteLine(beverage1.GetDescription());
            Console.WriteLine(beverage1.GetCost());

            Beverage beverage2 = new Espresso();

            beverage2 = new Mocha(beverage2);
            Console.WriteLine(beverage2.GetDescription());
            Console.WriteLine(beverage2.GetCost());

            Beverage beverage3 = new Espresso();

            beverage3 = new Mocha(beverage3);
            beverage3 = new Whip(beverage3);
            Console.WriteLine(beverage3.GetDescription());
            Console.WriteLine(beverage3.GetCost());
        }
예제 #14
0
        static void Main(string[] args)
        {
            Beverage beverage = new Espresso(new TallSize());

            Console.WriteLine(beverage);

            Beverage beverage2 = new DarkRoast(new VentiSize());

            beverage2 = new Soy(beverage2);
            beverage2 = new Mocha(beverage2);
            beverage2 = new Mocha(beverage2);
            beverage2 = new Whip(beverage2);
            Console.WriteLine(beverage2);

            Beverage beverage3 = new Whip(new Mocha(new Soy(new HouseBlend(new GrandeSize()))));

            Console.WriteLine(beverage3);

            Console.ReadLine();
        }
        public void TestDecoratorPattern()
        {
            Beverage beverage = new Espresso();

            Assert.Equal("Espresso $1.99", beverage.Description + " $" + beverage.Cost());

            Beverage beverage2 = new DarkRoast();

            beverage2 = new Mocha(beverage2);
            beverage2 = new Mocha(beverage2);
            beverage2 = new Whip(beverage2);
            Assert.Equal("Dark Roast Coffee, Mocha, Mocha, Whip $1.49", beverage2.Description + " $" + beverage2.Cost());

            Beverage beverage3 = new HouseBlend();

            beverage3 = new Soy(beverage3);
            beverage3 = new Mocha(beverage3);
            beverage3 = new Whip(beverage3);
            Assert.Equal("House Blend Coffee, Soy, Mocha, Whip $1.34", beverage3.Description + " $" + beverage3.Cost());
        }
예제 #16
0
        static void Main(string[] args)
        {
            Beverage beverage = new Espresso();

            Console.WriteLine($"{beverage.GetDescription()} ${beverage.Cost()}");

            Beverage beverage2 = new DarkRoast();

            beverage2 = new Mocha(beverage2);
            beverage2 = new Mocha(beverage2);
            beverage2 = new Whip(beverage2);
            Console.WriteLine($"{beverage2.GetDescription()} ${beverage2.Cost()}");

            Beverage beverage3 = new HouseBlend();

            beverage3 = new Soy(beverage3);
            beverage3 = new Mocha(beverage3);
            beverage3 = new Whip(beverage3);
            Console.WriteLine($"{beverage3.GetDescription()} ${beverage3.Cost()}");
        }
    static void Main()
    {
        Beverage beverage0 = new Espresso();

        System.Console.WriteLine($"{beverage0.GetDescription()} {beverage0.Cost()} $");

        Beverage beverage1 = new DarkRoast();

        beverage1 = new Mocha(beverage1);
        beverage1 = new Mocha(beverage1);
        beverage1 = new Whip(beverage1);
        System.Console.WriteLine($"{beverage1.GetDescription()} {beverage1.Cost()} $");

        Beverage beverage2 = new HouseBlend();

        beverage2 = new Soy(beverage2);
        beverage2 = new Mocha(beverage2);
        beverage2 = new Whip(beverage2);
        System.Console.WriteLine($"{beverage2.GetDescription()} {beverage2.Cost()} $");
    }
예제 #18
0
        public void DecoratorTest()
        {
            Beverage beverage = new Espresso();

            Console.WriteLine($"{beverage.GetDescription()} ${beverage.Cost()}");

            Beverage beverage2 = new DarkRoast();

            beverage2 = new Mocha(beverage2);
            beverage2 = new Mocha(beverage2);
            beverage2 = new Whip(beverage2);
            Console.WriteLine($"{beverage2.GetDescription()} ${beverage2.Cost()}");

            Beverage beverage3 = new HouseBlend();

            beverage3 = new Soy(beverage3);
            beverage3 = new Mocha(beverage3);
            beverage3 = new Whip(beverage3);
            Console.WriteLine($"{beverage3.GetDescription()} ${beverage3.Cost()}");
        }
예제 #19
0
        static void Main(string[] args)
        {
            IBeverage espresso = new Espresso();

            espresso.Size = BeverageSize.Venti;
            espresso.Print();

            IBeverage doubleMochaWhip = new DarkRoast();

            doubleMochaWhip      = new Mocha(doubleMochaWhip);
            doubleMochaWhip      = new Mocha(doubleMochaWhip);
            doubleMochaWhip      = new Whip(doubleMochaWhip);
            doubleMochaWhip.Size = BeverageSize.Grande;
            doubleMochaWhip.Print();

            var superDrink = new Whip(new Mocha(new Soy(new HouseBlend())));

            superDrink.Size = BeverageSize.Venti;
            superDrink.Print();
        }
    public static void Test()
    {
        Beverage beverage = new Espresso();

        Console.WriteLine(beverage.getDescription() + " $" + beverage.cost());

        Beverage beverage2 = new DarkRoast();

        beverage2 = new Mocha(beverage2);
        beverage2 = new Mocha(beverage2);
        beverage2 = new Whip(beverage2);
        Console.WriteLine(beverage2.getDescription() + " $" + beverage2.cost());

        Beverage beverage3 = new HouseBlend();

        beverage3 = new Soy(beverage3);
        beverage3 = new Mocha(beverage3);
        beverage3 = new Whip(beverage3);
        Console.WriteLine(beverage3.getDescription() + " $" + beverage3.cost());
    }
예제 #21
0
        static void Main()
        {
            BeverageBase espresso = new Espresso();
            BeverageBase blackTea = new BlackTea();
            BeverageBase greenTea = new GreenTea();

            Print(espresso);
            Print(blackTea);
            Print(greenTea);

            Console.WriteLine("-------------------------");

            BeverageBase capuccino = new SugarCondiment(new MilkCondiment(new Espresso()));

            Print(capuccino);

            BeverageBase greenTeaWithSugar = new SugarCondiment(new GreenTea());

            Print(greenTeaWithSugar);
        }
예제 #22
0
        private static void TestDecoratorPattern()
        {
            IBeverage beverage = new Espresso(CoffeeSize.Tall);

            Console.WriteLine("{0} $ {1}", beverage.Description, beverage.Cost());

            IBeverage beverage1 = new DarkRoast(CoffeeSize.Tall);

            beverage1 = new Mocha(beverage1);
            beverage1 = new Mocha(beverage1);
            beverage1 = new Whip(beverage1);
            Console.WriteLine($"{beverage1.Description} $ {beverage1.Cost()}");

            IBeverage beverage2 = new HouseBlend(CoffeeSize.Tall);

            beverage2 = new Soy(beverage2);
            beverage2 = new Mocha(beverage2);
            beverage2 = new Whip(beverage2);
            Console.WriteLine($"{beverage2.Description} $ {beverage2.Cost()}");
        }
예제 #23
0
        static void Main(string[] args)
        {
            IBeverage beverage = new DarkRoast();

            PrintBeverage(beverage);
            beverage = new MochaDecorator(beverage);
            PrintBeverage(beverage);
            beverage = new SoyDecorator(beverage);
            PrintBeverage(beverage);

            IBeverage beverage2 = new Espresso();

            PrintBeverage(beverage2);
            beverage2 = new WhipDecorator(beverage2);
            PrintBeverage(beverage2);
            beverage2 = new MochaDecorator(beverage2);
            PrintBeverage(beverage2);

            Console.Read();
        }
예제 #24
0
        /// <summary>
        /// 模板方法
        /// </summary>
        static void TemplateMethod()
        {
            Console.WriteLine($"模板方法模式{Environment.NewLine}-------------------------------------------");

            Console.WriteLine("开始制作:[意式浓缩咖啡]");
            CoffeTemplate coffe = new Espresso();

            coffe.MakeCoffe();
            Console.WriteLine($"制作完毕{Environment.NewLine}");

            Console.WriteLine("开始制作:[美式咖啡]");
            coffe = new Americano();
            coffe.MakeCoffe();
            Console.WriteLine($"制作完毕{Environment.NewLine}");

            Console.WriteLine("开始制作:[拿铁咖啡]");
            coffe = new Latte();
            coffe.MakeCoffe();
            Console.WriteLine($"制作完毕{Environment.NewLine}");
            Console.ReadKey();
        }
예제 #25
0
        static void Main(string[] args)
        {
            Beverage beverage = new Espresso();

            Console.WriteLine(beverage.GetDescription() + " $" + beverage.Cost());

            Beverage beverageDark = new DarkRoast();

            beverageDark = new Mocha(beverageDark);
            beverageDark = new Mocha(beverageDark);
            beverageDark = new Whip(beverageDark);
            Console.WriteLine(beverageDark.GetDescription() + " $" + beverageDark.Cost());

            Beverage beverageHouse = new HouseBlend();

            beverageHouse = new Mocha(beverageHouse);
            beverageHouse = new Soy(beverageHouse);
            beverageHouse = new Whip(beverageHouse);
            Console.WriteLine(beverageHouse.GetDescription() + " $" + beverageHouse.Cost());

            Console.ReadLine();
        }
예제 #26
0
        static void Main(string[] args)
        {
            var beastMusic = new Metal();

            beastMusic.Destroy(50);
            // Console.WriteLine(beastMusic.Sing());

            var horrorFilm = new Horror();

            horrorFilm.scaryAsShit(7);

            var beefyStuff = new Beef();

            beefyStuff.Good(Cut.Ribeye);

            var strongCoffee = new Espresso();

            strongCoffee.Perky();

            Console.WriteLine();
            Console.ReadLine();
        }
예제 #27
0
        public void StarbuzzCoffeeTest()
        {
            var beverage = new Espresso();

            Console.WriteLine(beverage.Description + " $ " + beverage.Cost());

            Beverage beverage2 = new DarkRoast();

            beverage2 = new Mocha(beverage2);
            beverage2 = new Mocha(beverage2);
            beverage2 = new Whip(beverage2);

            Console.WriteLine(beverage2.Description + " $ " + beverage2.Cost());

            Beverage beverage3 = new HouseBlend();

            beverage3 = new Soy(beverage3);
            beverage3 = new Mocha(beverage3);
            beverage3 = new Whip(beverage3);

            Console.WriteLine(beverage3.Description + " $ " + beverage3.Cost());
        }
예제 #28
0
        static void Main(string[] args)
        {
            // Simulando o pedido de um Café Expresso sem condimentos
            Beverage b1 = new Espresso();
            Console.WriteLine(b1.GetDescription() + " - R$ " + b1.Cost());

            // Simulando o pedido de um Café DarkRoast com duplo Moca (chocolate) e creme
            Beverage b2 = new DarkRoast();
            b2 = new Mocha(b2);
            //b2 = new Mocha(b2);
            b2 = new Whip(b2);
            Console.WriteLine(b2.GetDescription() + " - R$ " + b2.Cost());

            // Simulando o pedido de um Café HouseBlend com Moca, soja e creme
            Beverage b3 = new HouseBlend();
            b3 = new Soy(b3);
            b3 = new Mocha(b3);
            b3 = new Whip(b3);
            Console.WriteLine(b3.GetDescription() + " - R$ " + b3.Cost());

            Console.ReadKey();
        }
예제 #29
0
        static void Main(string[] args)
        {
            Beverage beverage = new Espresso(BeverageSize.Grande);

            Console.WriteLine(beverage.Description + " $" + beverage.Cost);

            Beverage beverage2 = new DarkRoast(BeverageSize.Tall);

            beverage2 = new Mocha(beverage2);
            beverage2 = new Mocha(beverage2);
            beverage2 = new Whip(beverage2);
            Console.WriteLine(beverage2.Description + " $" + beverage2.Cost);

            Beverage beverage3 = new HouseBlend(BeverageSize.Venti);

            beverage3 = new Soy(beverage3);
            beverage3 = new Mocha(beverage3);
            beverage3 = new Whip(beverage3);
            Console.WriteLine(beverage3.Description + " $" + beverage3.Cost);

            Console.ReadKey();
        }
예제 #30
0
        static void Main(string[] args)
        {
            //Console.WriteLine(Greeting("Richard"));
            //Thread.Sleep(2000);
            //Console.WriteLine(Greeting("Paul"));
            //Thread.Sleep(2000);
            //Console.WriteLine(Greeting("Richard"));
            //Console.ReadLine();

            var greetingMemoize = Memoize <string, string>(Greeting);

            Console.WriteLine(greetingMemoize("Richard"));
            Thread.Sleep(2000);
            Console.WriteLine(greetingMemoize("Paul"));
            Thread.Sleep(2000);
            Console.WriteLine(greetingMemoize("Richard"));
            Thread.Sleep(2000);
            Console.WriteLine(greetingMemoize("Paul"));

            //组合函数Demo
            Espresso espresso = make(new CoffeeBeans());
        }
예제 #31
0
        static void Main(string[] args)
        {
            Beverage bev = new Espresso();

            Console.WriteLine(bev.GetDescription() + "- $" + bev.cost());

            Beverage bev2 = new DarkRoast();

            bev2 = new Soy(bev2);
            bev2 = new Mocha(bev2);
            bev2 = new Soy(bev2);
            Console.WriteLine(bev2.GetDescription() + " - $" + bev2.cost());

            Beverage bev3 = new HouseBlend();

            bev3 = new Soy(bev3);
            bev3 = new Mocha(bev3);
            bev3 = new Whip(bev3);
            bev3 = new Soy(bev3);
            bev3 = new Whip(bev3);
            Console.WriteLine(bev3.GetDescription() + " - $" + bev3.cost());
            Console.ReadKey();
        }
예제 #32
0
        static void Main(string[] args)
        {
            BaseBeverage beverage = new Espresso();

            Console.WriteLine(beverage.Description + " $" + beverage.Cost().ToString("0.##"));

            BaseBeverage beverage2 = new DarkRoast();

            beverage2 = new Mocha(beverage2);
            beverage2 = new Mocha(beverage2);
            beverage2 = new Whip(beverage2);
            Console.WriteLine(beverage2.Description + " $" + beverage2.Cost().ToString("0.##"));

            BaseBeverage beverage3 = new HouseBlend();

            beverage3.Size = BaseBeverage.BeverageSize.Venti;
            beverage3      = new Soy(beverage3);
            beverage3      = new Mocha(beverage3);
            beverage3      = new Whip(beverage3);
            Console.WriteLine(beverage3.Description + " $" + beverage3.Cost().ToString("0.##"));

            Console.ReadKey();
        }
예제 #33
0
        public static void Start()
        {
            DIServiceLocator.Current.RegisterInstance <IPriceProvider>(new ComponentCosts());

            Beverage beverage = new Espresso();

            beverage = new Mocha(beverage);
            "{0} ${1}".P(beverage.Description, beverage.Cost());

            Beverage beverage2 = new DarkRoast();

            beverage2 = beverage2.AddComponent <Mocha>();
            beverage2 = beverage2.AddComponent <Mocha>();
            beverage2 = beverage2.AddComponent <Whip>();
            "{0} ${1}".P(beverage2.Description, beverage2.Cost());

            Beverage beverage3 = new HouseBlend();

            SupportExtensions.AddComponent <Soy>(ref beverage3);
            SupportExtensions.AddComponent <Mocha>(ref beverage3);
            SupportExtensions.AddComponent <Whip>(ref beverage3);
            "{0} ${1}".P(beverage3.Description, beverage3.Cost());
        }
예제 #34
0
 public void Espresso()
 {
     Espresso beverage = new Espresso();
     Assert.AreEqual(1.99, beverage.Cost(), DELTA);
 }