前提:含抽象类、扩展接口、具体实现类、具体扩展类。使用组合的方式替代继承。(ps:最近想不到更新啥,就先更着以前呆的桥接模式)
区别:桥接模式与策略模式均采用组合的方式,区别在于可将策略模式当成桥接模式的子集,去掉桥接模式的扩展接口,那桥接模式与策略模式就基本一致,都是拥有一个使用接口的对象聚合某个接口后调用接口具体的实现类。
用途:关联不同对象的关系。如多个软件与多个系统。
1 抽象类(形状接口):
public abstract class Shape {
protected Color color;
public void setColor(Color color) {
this.color = color;
}
public abstract void draw();
}
2 扩展接口(颜色接口):
public interface Color {
public String paintColor();
}
3 具体实现类(正方形、圆形等):
public class Square extends Shape {
@Override
public void draw() {
System.out.println("正方形, 颜色是" + color.paintColor());
}
}
4 具体扩展实现(颜色):
public class ColorWhite implements Color {
@Override
public String paintColor() {
return "白色";
}
}
5 使用:
public static void main(String[] args) {
//具体实现
Shape square = new Square();
Shape circle = new Circle();
//扩展具体实现
Color white = new ColorWhite();
Color black = new ColorBlack();
square.setColor(white);//依赖很强,如果没设置调用draw就会报错
circle.setColor(black);
//调用
square.draw();
circle.draw();
}
标签:draw,桥接,接口,Color,模式,设计模式,public,color From: https://blog.51cto.com/u_13854513/6127520