概念
实现系统可能有多个维度分类,每一种维度都可能变化,那么把这种多维度分类给分离出来让他们独立变化,减少他们之间耦合,将继承关系转化成组合关系,它降低了类与类之间的耦合度,减少了系统中类的数量。
比如对于笔,有大,小两种型号,有红,蓝两种颜色,构建笔这个对象有两种方案 1 为每种型号的笔都提供一套各种颜色的版本 2 对型号和颜色进行组合成对象 显然方案2便于扩展,这便是利用桥接模式,将继承转换为关联关系,降低类耦合
实现方式
- Abstraction —— 抽象部分(抽象类),保持一个对实现部分对象的引用,抽象部分中的方法需要调用实现部分中的对象来实现。
- RefinedAbstraction —— 优化的抽象部分(具体类)。上面抽象部分的具体实现,对其中的方法进行完善和扩展
- Impementor —— 实现部分,(接口或抽象类),一般是由实现部分提供基本操作,抽象部分定义的是基于实现部分这些基本操作的业务方法。
- ConcreteImpementor —— 具体实现部分。
public interface Color {
void paint(String str, int penType);
}
public class Red implements Color {
@Override
public void paint(String str, int penType) {
System.out.println("Red color : " + str + "\npenType = " + penType);
}
}
public class Blue implements Color {
@Override
public void paint(String str, int penType) {
System.out.println("Blue color : " + str + "\npenType = " + penType);
}
}
public abstract class Pen {
protected Color color;
public void setColor(Color color) {
this.color = color;
}
public abstract void draw(String name);
}
public class BigPen extends Pen {
@Override
public void draw(String name) {
color.paint(name, 2);
}
}
public class SmallPen extends Pen {
@Override
public void draw(String name) {
color.paint(name, 1);
}
}