【设计模式】(十四)–结构型模式–桥接模式
桥接模式定义
Decouple an abstraction from its implementation so that the two can vary independently.
意思是将抽象和实现解耦,是的两者可以独立的变化。
这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。
桥接模式有以下4个元素
- Abstraction 抽象类
- Implementation 抽象的实现类
- Refined 扩充的抽象类
- SpecificImplementation 具体实现类
桥接模式的优点
- 1、抽象和实现的分离。
- 2、优秀的扩展能力。
- 3、实现细节对客户透明。
桥接模式的使用场景
- 1、如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承联系,通过桥接模式可以使它们在抽象层建立一个关联关系。
- 2、对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用。
- 3、一个类存在两个独立变化的维度,且这两个维度都需要进行扩展。
桥接模式的简单实现
类图
实现
public class SanShaoCarFactory extends AbstractCarFactory {
public SanShaoCarFactory(Color color) {
super(color);
}
@Override
public void makeCar() {
System.out.println("三少汽车厂开始造车");
System.out.println("制造了一台:" + color.getColor() + "的车");
}
public static void main(String[] args) {
Black black = new Black();
AbstractCarFactory sanShaoCarFactory = new SanShaoCarFactory(black);
sanShaoCarFactory.makeCar();
}
}
public abstract class AbstractCarFactory {
Color color;
public AbstractCarFactory(Color color) {
this.color = color;
}
public Color getColor() {
return color;
}
public abstract void makeCar();
}
public interface Color {
String getColor();
}
public class Black implements Color {
@Override
public String getColor() {
return "黑色";
}
}
结果