桥接模式

类图

代码

1
2
3
abstract class Color{
public abstract void paint(String name);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
abstract class Shape{

private Color color;

public Color getColor() {
return color;
}

public void setColor(Color color) {
this.color = color;
}

public abstract void draw(Color color);
}
1
2
3
4
5
6
7
class Blue extends Color{

@Override
public void paint(String name) {
System.out.println("蓝色的" + name);
}
}
1
2
3
4
5
6
class Circle extends Shape{
@Override
public void draw(Color color) {
color.paint("圆形");
}
}
1
2
3
4
5
6
7
class Square extends Shape{

@Override
public void draw(Color color) {
color.paint("正方形");
}
}

测试类

1
2
3
4
5
6
7
8
9
10
11
public class Main {
public static void main(String args[]){
Color blue = new Blue();

Shape circle = new Circle();
Shape square = new Square();

square.draw(blue);
circle.draw(blue);
}
}

总结

概述

参考:https://www.cnblogs.com/chenssy/p/3317866.html

对于两个独立变化的维度,使用桥接模式再适合不过了。

优点

  1. 桥接模式提高了系统的可扩充性,在两个变化维度中任意扩展一个维度,都不需要修改原有系统。
  2. 实现细节对客户透明,可以对用户隐藏实现细节。

缺点

  1. 需要抽出出两个独立变化的维度,所以对其使用范围有一定局限性