设计模式-结构型模式-桥接模式

概述

桥接模式Bridge Pattern : 是一种结构型设计模式。

旨在将抽象部分实现部分分离,使它们可以独立变化。

它通过组合代替继承,解决类爆炸问题,并提高系统的灵活性和可扩展性。

组成部分

【抽象部分】(Abstraction) :定义高层控制逻辑,并包含一个对实现部分的引用。
扩展抽象部分(Refined Abstraction) :对抽象部分的扩展,提供更多控制逻辑。
【实现部分】(Implementor) :定义底层操作的接口,供抽象部分调用。
具体实现部分(Concrete Implementor):实现实现部分的接口,提供具体操作。

一个背景案例

画图 : 画 不同形状的、不同颜色的 图形。

例如 : 三角形-红色的;三角形-绿色的;圆形-红色的;圆形-绿色的;

分析 : 把 形状定位为 抽象的部分,把 填充颜色定位为具体实现部分;画图形的时候,组合颜色一并填充。
当需要新增 形状 or 颜色 的时候,只需要新增一个类即可,在使用时可以自由组合。

实际上,此处的这个 Shap 抽象类,就相当于一个桥的作用

类图结构如下:

实现部分- Color

java 复制代码
public interface Color {
    void fillColor();
}
java 复制代码
public class ColorRed implements Color{
    @Override
    public void fillColor() {
        System.out.println("填充红色");
    }
}
java 复制代码
public class ColorGreen implements Color{
    @Override
    public void fillColor() {
        System.out.println("填充绿色");
    }
}

抽象部分-Shap

java 复制代码
public abstract class Shap {
	// 聚合 Color  
    protected Color color;

    public Shap(Color color) {
        this.color = color;
    }

    public abstract void draw();
}
java 复制代码
public class ShapTriangle extends Shap{
    public ShapTriangle(Color color) {
        super(color);
    }

    @Override
    public void draw() {
        System.out.println("绘制三角形");
        color.fillColor();
    }
}
java 复制代码
public class ShapCircle extends Shap{
    public ShapCircle(Color color) {
        super(color);
    }

    @Override
    public void draw() {
        System.out.println("画圆");
        color.fillColor();
    }
}

测试类

java 复制代码
public class Test {
    public static void main(String[] args) {
        // 一个颜色的实现对象
        Color colorGreen = new ColorGreen();

        // 绘制不同的形状,组合上对应的颜色对象
        Shap shapCircle = new ShapCircle(colorGreen);
        shapCircle.draw();

        Shap shapTriangle = new ShapTriangle(colorGreen);
        shapTriangle.draw();
    }
}
复制代码
执行效果:
画圆
填充绿色
绘制三角形
填充绿色
相关推荐
小当家.1053 分钟前
AIGrader:一个 AI 作业批改平台的 Java EE 课设实战
java·人工智能·java-ee
devilnumber6 分钟前
Lambda|行为参数化 完整精讲
java·lambda·行为参数化
garmin Chen6 分钟前
Prompt工程入门:让AI按你的要求工作(3)--Prompt工程与提示词安全评测概述
java·人工智能·python·安全·prompt
阿正的梦工坊8 分钟前
【Rust】05-结构体、枚举与模式匹配
java·数据库·rust
阿正的梦工坊10 分钟前
【Rust】10-Cargo、测试与实用开发工作流
java·rust·log4j
用户2986985301411 分钟前
Java 实战:Word 文档中超链接的添加与自定义技巧
java·后端
swordbob18 分钟前
Spring事务失效的场景
java·开发语言·spring
写代码的小阿帆20 分钟前
行为型设计模式之观察者(发布-订阅)模式
设计模式
Devin~Y20 分钟前
大厂 Java 面试实战:从 Spring Boot 微服务到 AI RAG 音视频平台全链路解析
java·spring boot·redis·spring cloud·微服务·rag·spring ai
让我上个超影吧21 分钟前
Cluade code:Subagents (子代理)
java·ai