结构型设计模式——桥接模式
将抽象部分与实现部分分离,使得它们都可以独立地变化
适用于
①不希望在抽象和它的实现部分之间有固定的绑定关系。例如,这种情况可能是因为,在程序运行时刻实现部分应可以被选择或者切换
②类的抽象和它的实现都可以通过生成子类的方法加以扩充。这是Bridge模式使得开发者可以对不同的抽象接口和实现部分进行组合,并分别对它们进行扩充
③对抽象的实现部分的修改应对客户不产生影响,即客户代码不必重新编译
④有许多类要生成的类层次结构
⑤想在多个对象间共享实现,但同时要求客户并不知道这一点。
类图

1 internal class Program 2 { 3 static void Main(string[] args) 4 { 5 Shape shape = new Circle(new RedColor()); 6 shape.Draw(); 7 shape = new Square(new YellowColor()); 8 shape.Draw(); 9 } 10 }
1 /// <summary> 2 /// 实现花接口:颜色 3 /// </summary> 4 /// 案例:绘图中不同形状有不同的颜色 5 internal interface Color 6 { 7 void ApplyColor(); 8 }
1 internal class RedColor : Color 2 { 3 public void ApplyColor() 4 { 5 Console.WriteLine("红色"); 6 } 7 }
1 internal class YellowColor : Color 2 { 3 public void ApplyColor() 4 { 5 Console.WriteLine("黄色"); 6 } 7 }
1 internal abstract class Shape 2 { 3 /// <summary> 4 /// 组合Color接口,拥有Color接口的全部方法 5 /// </summary> 6 protected Color color; 7 protected Shape(Color color) 8 { 9 this.color = color; 10 } 11 12 public abstract void Draw(); 13 }
1 internal class Circle : Shape 2 { 3 public Circle(Color color) : base(color) 4 { 5 } 6 7 public override void Draw() 8 { 9 Console.WriteLine("绘制圆形,颜色:"); 10 color.ApplyColor(); 11 } 12 }
1 internal class Square : Shape 2 { 3 public Square(Color color) : base(color) 4 { 5 } 6 7 public override void Draw() 8 { 9 Console.WriteLine("绘制正方形,颜色:"); 10 color.ApplyColor(); 11 } 12 }

浙公网安备 33010602011771号