示例#1
0
        public void BridgeTest()
        {
            {
                var a = new ConcreteImplementorA();
                var b = new ConcreteImplementorB();

                var ra = new RefinedAbstractionA();
                var rb = new RefinedAbstractionB();
                ra.SetImplementor(a);
                ra.Operation();

                ra.SetImplementor(b);
                ra.Operation();
            }

            {
                var black = new BlackCoffee();
                var white = new WhiteCoffee();

                var large = new LargeCupCoffee(black);
                large.Make();
                large.SetCoffee(white);
                large.Make();

                var medium = new MediumCupCoffee(black);
                medium.Make();
                medium.SetCoffee(white);
                medium.Make();
            }
        }
示例#2
0
        static void Main(string[] args)
        {
            //// Structure
            //Abstraction abstraction = new RefinedAbstraction();

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

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


            //Practical about making coffee;
            MakeCoffee blackCoffee = new BlackCoffee();

            MakeCoffeeSingleton.MakeCoffee = blackCoffee;

            Coffee large = new LargeCupCoffee();

            large.Make();

            Coffee medium = new MediumCupCoffee();

            medium.Make();

            MakeCoffee whiteCoffeee = new WhiteCoffee();

            MakeCoffeeSingleton.MakeCoffee = whiteCoffeee;

            Coffee large1 = new LargeCupCoffee();

            large1.Make();

            Coffee medium1 = new MediumCupCoffee();

            medium1.Make();

            Console.Read();
        }
示例#3
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();
        }
示例#4
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();
        }