结构性设计模式之Bridge(桥接)

结构性设计模式之Bridge(桥接)

摘要

桥接模式是一种结构性设计模式,其核心思想是将抽象部分与实现部分分离,使二者能够独立变化。本文通过汽车产品生产案例(产品A/B与颜色红/蓝/黄)展示了桥接模式的应用:将颜色作为独立接口实现,产品类通过组合方式调用颜色功能。关键结构包括抽象产品类(Product)、具体产品类(ProductA)和颜色接口(Color)及其实现类(Red/Blue/Yellow)。该模式适用于需要避免抽象与实现固定绑定的场景,支持通过子类扩展功能,且修改实现不影响客户端代码。代码示例演示了如何为不同产品动态配置颜色。

前言:

用自己的话理解桥接模式,做到解耦,抽象层和实现层都可单独的变化。

本代码实现逻辑

生产汽车颜色,有黄色、红色、绿色。产品A、产品B... 都是有这几个颜色,把产品颜色进行抽取。

1)意图

将抽象部分于其实现部分分离,使它们都可以独立的变化。

2)结构

3)适用性(了解)

Bridge 模式适用于:

不希望在抽象和它的实现部分之间有一个固定的绑定关系。

类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充。

对一个抽象的实现部分的修改对应客户不产生影响,

代码:

c 复制代码
/**
 * @author psd
 * 结构性设计模式之桥接模式
 */
public class BridgePattern {
    public static void main(String[] args) {
        Product product = new ProductA();
        product.setName("产品A");
        product.setColor(new Blue());
        product.operation();


        Product product1  = new ProductA();
        product1.setName("产品B");
        product1.setColor(new Red());
        product1.operation();
    }
}

abstract class Product{
    private String name;
    protected Color color;
    public abstract void operation();
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Color getColor() {
        return color;
    }

    public void setColor(Color color) {
        this.color = color;
    }
}

class ProductA extends Product{
    @Override
    public void operation() {
        color.operation(this.getName());
    }
}

interface Color{
    void operation(String name);
}

class Yellow implements Color{
    @Override
    public void operation(String name) {
        System.out.println("黄色 " + name);
    }
}

class Blue implements Color{
    @Override
    public void operation(String name) {
        System.out.println("蓝色 " + name);
    }
}

class Red implements Color{
    @Override
    public void operation(String name) {
        System.out.println("红色 " + name);
    }
}

喜欢我的文章记得点个在看,或者点赞,持续更新中ing...

相关推荐
Zane19944 天前
一个 new 就能创建对象,为什么还要拆出单例、工厂、建造者、原型四种模式?
设计模式
怕浪猫5 天前
一行命令复刻爆款视频,我把 Hypit 从安装跑到了出片
人工智能·设计模式·程序员
Zane19945 天前
函数式编程里的函数,其实不是你天天写的那个函数——三大编程范式的边界在哪
设计模式
Zane19946 天前
策略模式现在该不该上?一次讲清楚过度设计和设计不足怎么找平衡
设计模式
她说..6 天前
常见设计模式-模板方法模式
java·spring·设计模式·springboot
xiaofeiyang1506 天前
第六章 · 桥接 — 三支毛笔,画出九种颜色
设计模式
Shadow(⊙o⊙)7 天前
OTOL设计模式 One Thread One Loop
服务器·网络·设计模式
sarasuki8 天前
如何让LLM 能在半夜偷偷打开网易云呢?
人工智能·设计模式·agent
小王师傅668 天前
【设计模式】装饰模式(四):框架源码实战——从 Java I/O 到 Spring 到 MyBatis
java·设计模式
执明wa8 天前
Android RecyclerView 多类型, 多种 Item
android·xml·开发语言·设计模式·android studio