桥接模式 Java代码示例
时间: 2025-08-21 18:54:01 浏览: 5
### 桥接模式的 Java 实现代码示例
桥接模式是一种结构型设计模式,它通过将抽象部分与其实现部分分离,使得两者可以独立变化。这种模式在处理多维度变化的类结构时非常有用,避免了类爆炸的问题。以下是一个具体的 Java 实现示例。
#### 1. 定义实现化接口(Implementor)
首先定义一个实现化接口,表示桥接模式中的一端,即实现部分的接口。
```java
public interface Brand {
void open();
void close();
}
```
#### 2. 具体实现类(Concrete Implementor)
接着,为不同的品牌实现该接口,例如品牌 A 和品牌 B。
```java
public class BrandA implements Brand {
@Override
public void open() {
System.out.println("BrandA is opening.");
}
@Override
public void close() {
System.out.println("BrandA is closing.");
}
}
public class BrandB implements Brand {
@Override
public void open() {
System.out.println("BrandB is opening.");
}
@Override
public void close() {
System.out.println("BrandB is closing.");
}
}
```
#### 3. 定义抽象类(Abstraction)
定义一个抽象类,并在其中组合实现化接口的实例。
```java
public abstract class Phone {
protected Brand brand;
public Phone(Brand brand) {
this.brand = brand;
}
public abstract void open();
public abstract void close();
}
```
#### 4. 扩展抽象类(Refined Abstraction)
实现具体的抽象类,例如不同类型的手机,它们通过组合品牌接口的实例来实现具体的行为。
```java
public class FoldedPhone extends Phone {
public FoldedPhone(Brand brand) {
super(brand);
}
@Override
public void open() {
System.out.print("FoldedPhone: ");
brand.open();
}
@Override
public void close() {
System.out.print("FoldedPhone: ");
brand.close();
}
}
public class SlidePhone extends Phone {
public SlidePhone(Brand brand) {
super(brand);
}
@Override
public void open() {
System.out.print("SlidePhone: ");
brand.open();
}
@Override
public void close() {
System.out.print("SlidePhone: ");
brand.close();
}
}
```
#### 5. 使用示例
最后,通过组合不同的手机类型和品牌来展示桥接模式的效果。
```java
public class BridgePatternDemo {
public static void main(String[] args) {
// 使用品牌 A 的折叠手机
Phone foldedPhoneA = new FoldedPhone(new BrandA());
foldedPhoneA.open();
foldedPhoneA.close();
// 使用品牌 B 的滑动手机
Phone slidePhoneB = new SlidePhone(new BrandB());
slidePhoneB.open();
slidePhoneB.close();
}
}
```
运行结果如下:
```
FoldedPhone: BrandA is opening.
FoldedPhone: BrandA is closing.
SlidePhone: BrandB is opening.
SlidePhone: BrandB is closing.
```
这个示例展示了如何通过桥接模式将手机类型与品牌解耦,从而可以独立扩展不同的手机类型和品牌[^2]。
---
阅读全文
相关推荐




















