桥接模式
桥接模式(Bridge Pattern)是一种结构型设计模式,用于将抽象和实现分离开来,以便它们可以独立地变化。桥接模式的核心思想是将一个类的抽象部分和它的实现部分分离开来,使它们可以独立地进行变化,从而实现更好的灵活性和可扩展性。
在桥接模式中,抽象部分和实现部分分别由两个类来实现。抽象类中定义了一些基本的方法和属性,而实现类则负责实现这些方法和属性。这样,当需要对抽象部分进行扩展时,只需要定义一个新的抽象类即可,而不需要修改原来的实现类。同样地,当需要对实现部分进行扩展时,只需要定义一个新的实现类即可,而不需要修改原来的抽象类。
下面是一个简单的桥接模式示例:
// 抽象部分
abstract class Shape {
protected Color color;
public Shape(Color color) {
this.color = color;
}
public abstract void draw();
}
// 实现部分
interface Color {
void applyColor();
}
class Red implements Color {
public void applyColor() {
System.out.println("Applying red color");
}
}
class Blue implements Color {
public void applyColor() {
System.out.println("Applying blue color");
}
}
// 扩展抽象部分
class Square extends Shape {
public Square(Color color) {
super(color);
}
public void draw() {
System.out.print("Drawing a square. ");
color.applyColor();
}
}
class Circle extends Shape {
public Circle(Color color) {
super(color);
}
public void draw() {
System.out.print("Drawing a circle. ");
color.applyColor();
}
}
// 客户端代码
public class Client {
public static void main(String[] args) {
Shape redSquare = new Square(new Red());
Shape blueCircle = new Circle(new Blue());
redSquare.draw();
blueCircle.draw();
}
}
在上面的示例中,Shape 是抽象类,Color 是实现接口,Square 和 Circle 是具体的扩展类。Red 和 Blue 是实现类,负责实现 Color 接口中的方法。通过将抽象类和实现接口分离开来,可以轻松地添加新的形状和颜色,并且不需要修改原有的代码。