美文网首页
9_桥接模式

9_桥接模式

作者: 真是个点子王 | 来源:发表于2021-01-13 11:01 被阅读0次
  • 问题引入:现有一个需求,需要创建不同的图型,每个图型都有可能会有不同的颜色,则可以用继承的方式来设计类的关系,如下


  • 但是这样做的问题也很明显,随着需求的更新,会导致类的爆炸,扩展起来不够灵活。
  • 桥接模式:将抽象是与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。

结构

  • 抽象化(Abstraction)角色:定义抽象类,并包含一个对实现化对象的引用。
  • 扩展抽象化(Refined Abstraction)角色:是抽象化角色的子类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法;
  • 实现化(Implementor)角色:定义实现化角色的接口,供扩展抽象化角色调用。
  • 具体实现化(Concrete Implementor)角色:给出实现化角色接口的具体实现。

实例

  • 不同的操作系统需要读取不同格式类型的视频文件。
// VideoFile.java
public interface VideoFile {

    // 解码功能
    void decode(String fileName);
}

// AviFile.java
public class AviFile implements VideoFile{

    @Override
    public void decode(String fileName) {
        System.out.println("avi视频文件 : " + fileName);
    }
}

// RmvbFile.java
public class RmvbFile implements VideoFile{
    @Override
    public void decode(String fileName) {
        System.out.println("rmvb视频文件 : " + fileName);
    }
}

//Operating.java
public abstract class OperatingSystem {

    // 声明videoFile变量
    protected VideoFile videoFile;

    public OperatingSystem(VideoFile videoFile) {
        this.videoFile = videoFile;
    }
    public abstract void play(String fileName);
}

//Mac.java
public class Mac extends OperatingSystem{
    public Mac(VideoFile videoFile) {

        super(videoFile);
    }

    @Override
    public void play(String fileName) {
        videoFile.decode(fileName);
    }
}

//Windows.java
public class Windows extends OperatingSystem{

    public Windows(VideoFile videoFile) {
        super(videoFile);
    }

    @Override
    public void play(String fileName) {
        videoFile.decode(fileName);
    }
}

// Client.java
public class Client {
    public static void main(String[] args) {
        OperatingSystem operatingSystem = new Mac(new AviFile());

        operatingSystem.play("Hello World");
    }
}

使用场景

  • 当一个业务场景需要两个独立变化的维度,且两个维度都需要进行扩展时;
  • 当一个系统不希望使用继承或因为多层次继承导致系统类的个数急剧增加时;

相关文章

  • 9_桥接模式

    问题引入:现有一个需求,需要创建不同的图型,每个图型都有可能会有不同的颜色,则可以用继承的方式来设计类的关系,如下...

  • 设计模式-桥接模式

    设计模式-桥接模式 定义 桥接模式(Bridge Pattern)也称为桥梁模式、接口(Interface)模式或...

  • 结构型模式:桥接模式

    文章首发:结构型模式:桥接模式 七大结构型模式之二:桥接模式。 简介 姓名 :桥接模式 英文名 :Bridge P...

  • 设计模式之桥接模式

    设计模式之桥接模式 1. 模式定义 桥接模式又称柄体模式或接口模式,它是一种结构性模式。桥接模式将抽象部分与实现部...

  • 06-01-001 虚拟机的网络连接方式(转运整理)

    一、Bridged(桥接模式) 什么是桥接模式?桥接模式就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信。在桥...

  • 桥接模式与中介模式

    桥接模式-BRIDGE 对桥接模式感兴趣,是因为公司业务上需要桥接Html5和ReactNative两个平台。桥接...

  • 设计模式——桥接模式

    设计模式——桥接模式 最近公司组件分享设计模式,然而分配给我的是桥接模式。就在这里记录我对桥接模式的理解吧。 定义...

  • 桥接模式

    个人博客http://www.milovetingting.cn 桥接模式 模式介绍 桥接模式也称为桥梁模式,是结...

  • 桥接模式

    桥接模式 参考原文: https://zhuanlan.zhihu.com/p/62390221 定义 桥接模式 ...

  • 10-桥接模式

    桥接模式-Bridge Pattern【学习难度:★★★☆☆,使用频率:★★★☆☆】 处理多维度变化——桥接模式(...

网友评论

      本文标题:9_桥接模式

      本文链接:https://www.haomeiwen.com/subject/pexuaktx.html