结构型设计模式——桥接模式

将抽象部分与实现部分分离,使得它们都可以独立地变化

适用于

①不希望在抽象和它的实现部分之间有固定的绑定关系。例如,这种情况可能是因为,在程序运行时刻实现部分应可以被选择或者切换

②类的抽象和它的实现都可以通过生成子类的方法加以扩充。这是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     }
View Code
1     /// <summary>
2     /// 实现花接口:颜色
3     /// </summary>
4     /// 案例:绘图中不同形状有不同的颜色
5     internal interface Color
6     {
7         void ApplyColor();
8     }
View Code
1     internal class RedColor : Color
2     {
3         public void ApplyColor()
4         {
5             Console.WriteLine("红色");
6         }
7     }
View Code
1     internal class YellowColor : Color
2     {
3         public void ApplyColor()
4         {
5             Console.WriteLine("黄色");
6         }
7     }
View Code
 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     }
View Code
 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     }
View Code
 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     }
View Code

 

posted @ 2025-04-08 22:15  是铭不是明  阅读(12)  评论(0)    收藏  举报