1. 结构型设计模式概述
在Java开发中,设计模式是提升代码质量的重要工具。结构型设计模式特别关注如何组合类和对象以形成更大的结构,就像建筑中的钢结构框架一样,它们为代码提供了可靠的组织方式。今天我们就来深入探讨7种核心结构型设计模式,这些模式能让你的代码结构更加优雅、可维护性更强。
我从事Java开发十多年,发现很多项目在初期运行良好,但随着功能增加就变得难以维护,往往是因为忽视了结构设计。结构型模式正是解决这类问题的利器,它们能帮助我们构建松耦合、高内聚的系统架构。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 适配器模式:让不兼容的接口协同工作
2.1 适配器模式的核心思想
适配器模式就像电源转换插头,让原本不匹配的接口能够协同工作。在实际开发中,我们经常遇到需要整合第三方库或遗留系统的情况,它们的接口往往与我们的系统不兼容。
java复制// 目标接口
public interface MediaPlayer {
void play(String audioType, String fileName);
}
// 适配器实现
public class MediaAdapter implements MediaPlayer {
AdvancedMediaPlayer advancedMusicPlayer;
public MediaAdapter(String audioType) {
if(audioType.equalsIgnoreCase("vlc")) {
advancedMusicPlayer = new VlcPlayer();
} else if(audioType.equalsIgnoreCase("mp4")) {
advancedMusicPlayer = new Mp4Player();
}
}
@Override
public void play(String audioType, String fileName) {
if(audioType.equalsIgnoreCase("vlc")) {
advancedMusicPlayer.playVlc(fileName);
} else if(audioType.equalsIgnoreCase("mp4")) {
advancedMusicPlayer.playMp4(fileName);
}
}
}
2.2 适配器模式的应用场景
适配器模式特别适用于以下场景:
- 需要使用现有的类,但其接口与系统不兼容
- 需要创建一个可复用的类,与不相关或不可预见的类协同工作
- 需要使用几个现有的子类,但通过子类化每个类来适配它们的接口不现实
提示:适配器模式有两种实现方式 - 类适配器(使用继承)和对象适配器(使用组合)。在Java中由于单继承限制,通常推荐使用对象适配器方式。
3. 桥接模式:解耦抽象与实现
3.1 桥接模式的架构设计
桥接模式通过将抽象部分与实现部分分离,使它们可以独立变化。这就像遥控器和电视的关系 - 遥控器是抽象,电视是实现,两者通过标准化接口连接。
java复制// 实现部分接口
public interface DrawAPI {
void drawCircle(int radius, int x, int y);
}
// 抽象部分
public abstract class Shape {
protected DrawAPI drawAPI;
protected Shape(DrawAPI drawAPI) {
this.drawAPI = drawAPI;
}
public abstract void draw();
}
// 具体实现
public class Circle extends Shap
