定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化。
使用场景:实现系统可能有多个角度分类,每一种角度都可能变化。
实现:实现系统可能有多角度分类,把这些分类分离出来,用聚合代替继承
优点:主要是扩展灵活

代码示例:比如画一个图形可以有多种角度,颜色和形状等,并且这个维度都存在多种变化。如果使用继承,就会出现两级继承,如果维度变大,则会变得更多。使用桥接如下:
/**
* 独立的形状抽象类
* @author liuhao
*
*/
public abstract class Shape {
protected Color color;
public Shape(Color color) {
super();
this.color = color;
}
public abstract void drow();
}
/**
* 圆形实现类
* @author liuhao
*
*/
public class Circle extends Shape {
public Circle(Color color) {
super(color);
}
@Override
public void drow() {
System.out.println("使用"+color.getColor()+"画一个○");
}
}
/**
* 独立的颜色抽象类
* @author liuhao
*
*/
public abstract class Color {
public abstract String getColor();
}
public class Red extends Color {
@Override
public String getColor() {
return "红色";
}
}
public class Green extends Color {
@Override
public String getColor() {
return "绿色";
}
}
public class Main {
public static void main(String[] args) {
Shape redCircle = new Circle(new Red());
redCircle.drow();
Shape greenCircle = new Circle(new Green());
greenCircle.drow();
}
}
结果:
这里还可以增加线粗细等多种维度,切各自独立变化。
536

被折叠的 条评论
为什么被折叠?



