一、桥接模式概念
1.1 什么是桥接模式
桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化。桥接模式通过将抽象部分和实现部分分离来解决多维度变化的问题,从而提高了系统的灵活性和可扩展性。
结构
桥接模式通常由以下几个部分组成:
- Abstraction(抽象类): 定义了抽象部分的接口,并维护一个指向实现部分的引用。
- RefinedAbstraction(扩充抽象类): 扩展了抽象部分的接口,通常需要实现更多的功能。
- Implementor(实现接口): 定义了实现部分的接口,通常是一些基本操作。
- ConcreteImplementor(具体实现类): 实现了实现部分的接口,提供了具体的实现。
二、桥接模式代码
2.1 实现接口
public interface Color {
void applyColor();
}
2.2 具体实现类
public class Green implements Color {
@Override
public void applyColor() {
System.out.println("Applying green color");
}
}
public class Red implements Color{
@Override
public void applyColor() {
System.out.println("Applying red color");
}
}
2.3 抽象类
public abstract class Shape {
protected Color color;
public Shape(Color color) {
this.color = color;
}
abstract void applyColor();
}
2.4 扩充抽象类
public class Circle extends Shape{
public Circle(Color color) {
super(color);
}
@Override
void applyColor() {
System.out.print("Circle filled with color: ");
color.applyColor();
}
}
public class Square extends Shape {
public Square(Color color) {
super(color);
}
@Override
void applyColor() {
System.out.print("Square filled with color: ");
color.applyColor();
}
}
2.5 测试类
public class BridgePatternTest {
public static void main(String[] args) {
Shape redCircle = new Circle(new Red());
redCircle.applyColor();
Shape greenSquare = new Square(new Green());
greenSquare.applyColor();
// 输出:
// Circle filled with color: Applying red color
// Square filled with color: Applying green color
}
}
三、总结
桥接模式的优点包括:
- 分离了抽象部分和实现部分,使它们可以独立地变化。
- 提高了系统的灵活性和可扩展性,可以方便地添加新的抽象部分和实现部分。
缺点包括:
- 增加了系统的复杂性,需要额外的抽象和实现类来实现分离。
- 客户端需要了解抽象部分和实现部分之间的关系,可能会增加理解成本。