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(); } }
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(); }
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(); }
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(); }