Java桥接模式
定义
桥接模式(Bridge Pattern)是一种结构型设计模式,其目的是将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次,从而能在开发时分别使用它们。
实现方式
桥接模式使用了两个层次结构:抽象和实现。在抽象层级中,类定义了要做的事情,而在实现层级中,它们提供了做这些事情所需的具体细节。通过委托实现给抽象,桥接模式在运行时将两个层次连接在一起。
代码示例
下面是一个使用桥接模式的简单示例,假设我们正在为一家造纸厂创建一些软件。既然这家厂需要不同类型的纸张,我们将以便于尝试纸张的设计为例:
纸张类型抽象类
public abstract class Paper {
protected Color color;
public Paper(Color color) {
this.color = color;
}
public abstract void draw();
}
纸张颜色接口
public interface Color {
String fill();
}
实现红色纸张
public class Red implements Color {
public String fill() {
return "红色";
}
}
实现绿色纸张
public class Green implements Color {
public String fill() {
return "绿色";
}
}
实现白色纸张
public class White implements Color {
public String fill() {
return "白色";
}
}
实现圆角纸张
public class RoundedPaper extends Paper {
public RoundedPaper(Color color) {
super(color);
}
public void draw() {
System.out.println("圆角" + color.fill() + "纸张");
}
}
实现矩形纸张
public class RectangularPaper extends Paper {
public RectangularPaper(Color color) {
super(color);
}
public void draw() {
System.out.println("矩形" + color.fill() + "纸张");
}
}
实现测试类
public class BridgeTest {
public static void main(String[] args) {
Paper paper1 = new RoundedPaper(new Red());
paper1.draw();
Paper paper2 = new RectangularPaper(new Green());
paper2.draw();
Paper paper3 = new RectangularPaper(new White());
paper3.draw();
}
}
优缺点说明
优点
- 通过把实现独立出来,桥接模式使得实现可以独立地变化,从而可以避免让抽象和实现紧密地耦合在一起,扩展起来更加容易。
- 桥接模式可以使得接口与实现部分分离,使得设计更加清晰,结构更加简洁。
- 桥接模式可以优化系统,提高系统的可扩展性与可维护性。
缺点
- 实现抽象与实现部分分离,增加了系统的理解与设计难度。
- 桥接模式提高了系统的抽象度,使得设计难度增加。对于简单的需求,使用桥接模式会导致系统过于复杂。