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