当前位置: 首页 > article >正文

Java 设计模式之桥接模式

文章目录

  • Java 设计模式之桥接模式
    • 概述
    • UML
    • 代码实现

Java 设计模式之桥接模式

概述

  • 桥接模式(Bridge):将抽象部分与它的实现部分分离,使它们都可以独立地变化。
  • 通过桥接模式,可以避免类爆炸问题,并提高系统的可扩展性。

UML

在这里插入图片描述

核心思想:

  • 抽象部分:定义高层的控制逻辑。
  • 实现部分:定义底层的具体实现。
  • 桥接:通过组合的方式连接抽象部分和实现部分。

角色:

  • Implementor:实现部分的接口,定义行为。
  • ConcreteImplementor:具体实现部分类,实现行为。
  • Abstraction:抽象部分的抽象类,持有实现部分的引用。
  • RefinedAbstraction:具体抽象部分类,实现具体的抽象逻辑。

例如:图形绘制中的形状和颜色。

代码实现

假设我们需要绘制不同形状(如圆形、矩形)的图形,并且这些图形可以使用不同的颜色(如红色、绿色)。使用桥接模式可以将形状和颜色分离,使它们可以独立扩展。

定义部分实现的接口:

public interface Color {
    void applyColor();
}

定义具体的部分实现类:

public class Red implements Color {
    @Override
    public void applyColor() {
        System.out.println("使用红色");
    }
}
public class Green implements Color {
    @Override
    public void applyColor() {
        System.out.println("使用绿色");
    }
}

定义抽象实现的抽象类:

public abstract class Shape {
    protected Color color;

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

    public abstract void draw();
}

定义具体的抽象实现类:

public class Rectangle extends Shape {
    public Rectangle(Color color) {
        super(color);
    }

    @Override
    public void draw() {
        System.out.println("绘制矩形");
        color.applyColor();
    }
}
public class Circle extends Shape {
    public Circle(Color color) {
        super(color);
    }

    @Override
    public void draw() {
        System.out.println("绘制圆形");
        color.applyColor();
    }
}

使用:

public class Client {
    public static void main(String[] args) {
        Red red = new Red();
        Green green = new Green();
        Shape redCircle = new Circle(red);
        Shape greenCircle = new Circle(green);
        redCircle.draw();
        greenCircle.draw();
    }
}

输出:

绘制圆形
使用红色
绘制圆形
使用绿色

http://www.kler.cn/a/547412.html

相关文章:

  • 传输层协议TCP ( 下 )
  • 一文说清楚什么是Token以及项目中使用Token延伸的问题
  • 【java面向对象的三大特性】封装、继承和多态
  • 【愚公系列】《Python网络爬虫从入门到精通》012-字符串处理
  • 为AI聊天工具添加一个知识系统 之103 详细设计之44 自性三藏 之4 祖传代码 之2
  • 网络安全扫IP工具
  • Java 语法糖:让开发更丝滑的“幕后操作”
  • DeepSeek 助力 Vue 开发:打造丝滑的侧边栏(Sidebar)
  • 【vscode】VScode Remote SSH配置
  • 卷积神经网络实战人脸检测与识别
  • Docker安装分布式vLLM
  • day3 改bug
  • CF91B Queue
  • DevOps与自动化部署全解析:从理论到实战
  • SwiftUI 5.0 中宝藏视图修改器 containerRelativeFrame 趣谈(下)
  • 工业相机选型五要素
  • 不需要移植和配置xinetd 等相类似执行文件,tftp-hpa服务器交叉移植使用说明
  • 什么是平面环形无影光源
  • List对象进行排序
  • Spring中的IOC详解