Esempio n. 1
0
        static void Main(string[] args)
        {
            #region 结构实现
            Abstraction abstraction = new RefinedAbstraction();

            abstraction.Implementor = new ConcreteImplementorA();
            abstraction.Operation();

            abstraction.Implementor = new ConcreteImplementorB();
            abstraction.Operation();
            #endregion

            Console.WriteLine("******************************");

            #region 实践应用
            MakeCoffeeSingleton whiteCoffeeSingleton = new MakeCoffeeSingleton(new WhiteCoffee());

            // 中杯牛奶咖啡
            MediumCupCoffee mediumWhiteCoffee = new MediumCupCoffee();
            mediumWhiteCoffee.Make();

            // 大杯牛奶咖啡
            LargeCupCoffee largeCupWhiteCoffee = new LargeCupCoffee();
            largeCupWhiteCoffee.Make();

            MakeCoffeeSingleton blackCoffeeSingleton = new MakeCoffeeSingleton(new BlackCoffee());
            // 中杯原味咖啡
            MediumCupCoffee mediumBlackCoffee = new MediumCupCoffee();
            mediumBlackCoffee.Make();

            // 大杯牛奶咖啡
            LargeCupCoffee largeCupBlackCoffee = new LargeCupCoffee();
            largeCupBlackCoffee.Make();
            #endregion

            Console.ReadKey();
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            Abstrcation abstraction = new RefindedAbstraction();

            abstraction.Implementor = new ConcreteImplementorA();
            abstraction.Operation();

            abstraction.Implementor = new ConcreteImplementorB();
            abstraction.Operation();

            //Example
            //以一杯咖啡为例,子类有四个:中杯加奶、大杯加奶、中杯不加奶、大杯不加奶。
            //这四个类实际是两个角色的组合:抽象和行为。其中抽象为中杯和大杯,行为为加奶和不加奶。
            //这种从分离抽象和行为的角度的方法称为桥接模式。
            MakeCoffeeSingleton wmcs = new MakeCoffeeSingleton(new WhiteCoffee());
            //中杯牛奶咖啡
            MediumCupCoffee wmcc = new MediumCupCoffee();

            wmcc.Make();
            //大杯牛奶咖啡
            LargeCupCoffee wlcc = new LargeCupCoffee();

            wlcc.Make();

            MakeCoffeeSingleton bmcs = new MakeCoffeeSingleton(new BlackCoffee());
            //中杯原味咖啡
            MediumCupCoffee bmcc = new MediumCupCoffee();

            bmcc.Make();
            //大杯原味咖啡
            LargeCupCoffee blcc = new LargeCupCoffee();

            blcc.Make();

            Console.ReadKey();
        }