# 23种设计模式-桥接模式
# 1.桥接模式
将抽象部分与它的实现部分分离,使它们都可以独立地变化。
# 优缺点
# 优点:
分离抽象与实现 提高扩展型 符合开闭原则 符合合成复用原则
# 缺点:
系统复杂 识别变化维度
# 使用场景
# 实现方式
# 视频格式抽象
public interface Vedio {
/**
* 打开视频
* 可以打开 MP4 / FLV 格式视频
* 视频 ( 格式 ) 是个 抽象
* @return
*/
Vedio openVedio();
/**
* 查看视频信息
*/
void showVedio();
}
# FLV 视频格式实现
/**
* FLV 视频格式
*/
public class FlvVedio implements Vedio {
@Override
public Vedio openVedio() {
System.out.println("打开 FLV 格式视频");
return new FlvVedio();
}
@Override
public void showVedio() {
System.out.println("当前视频格式是 FLV");
}
}
# MP4 视频格式实现
/**
* MP4 格式
*/
public class MP4Vedio implements Vedio {
@Override
public Vedio openVedio() {
System.out.println("打开 MP4 格式视频");
return new MP4Vedio();
}
@Override
public void showVedio() {
System.out.println("当前视频格式是 MP4");
}
}
# 系统平台抽象
/**
* 平台操作系统 抽象类
*/
public abstract class Platform {
/**
* 这是桥接模式最核心的代码
* 在 Platform 中通过组合方式关联 Vedio
* Platform 的子类也可以关联 Vedio 子类
*/
protected Vedio account;
public Platform(Vedio account) {
this.account = account;
}
/**
* 该方法与 Vedio 中的方法名相同
* 方法名相同不是强制的
* @return
*/
abstract Vedio openVedio();
}
# Linux 系统平台实现
public class LinuxPlatform extends Platform {
public LinuxPlatform(Vedio account) {
super(account);
}
@Override
Vedio openVedio() {
System.out.println("在 Linux 平台播放视频");
return account;
}
}
# Android 系统平台实现
public class AndroidPlatform extends Platform {
public AndroidPlatform(Vedio account) {
super(account);
}
@Override
Vedio openVedio() {
System.out.println("在 Android 平台打开视频");
return account;
}
}
# 测试类
public class Main {
public static void main(String[] args) {
// 在 Linux 平台打开 FLV 视频
Platform linuxPlatform = new LinuxPlatform(new FlvVedio());
Vedio linuxFlv = linuxPlatform.openVedio();
linuxFlv.showVedio();
System.out.println();
// 在 Android 平台打开 MP4 视频
Platform androidPlatform = new AndroidPlatform(new MP4Vedio());
Vedio androidMp4 = androidPlatform.openVedio();
androidMp4.showVedio();
}
}
参考博客:https://blog.csdn.net/shulianghan/article/details/119842918
← 23种设计模式-外观模式 设计模式总结 →