桥接模式(学习自https://juejin.im/post/6844903881101541383)
桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。
桥接模式需要先能分出系统中那些独立变化的维度,然后我们再进行分离。桥接模式的思想就是如何进行分离的过程。
所有设计模式的思想其实都希望我们更多的去利用组合,而不是继承。所以桥接模式的主要思想就是:将变化的维度抽象为不同的继承体系,每一个维度是自己的一个继承体系,然后通过组合将所需要的这些变化维度拼接为最后的对象。这维度和维度之间的联系组合我们把它称为桥。如下图Color和Pen之间就是一座桥,这个桥所连接是两个继承体系。两个继承体系独立变化。桥接模式主要是用来处理多维度变化的
举例:
pen:
public abstract class Pen {
Color color;
public void setColor(Color color) {
this.color = color;
}
abstract void size();
}
pen1:
public class Pen1 extends Pen{
@Override
void size() {
color.Color();
System.out.println("size:1");
}
}
color:
public interface Color {
public abstract void Color();
}
red:
public class Red implements Color{
@Override
public void Color() {
System.out.println("red");
}
}
test:
public class test {
public static void main(String[] args) {
Pen p = new Pen1();
Color c = new Red();
p.setColor(c);
p.size();
}
}