首页 > 其他分享 >初识设计模式 - 桥接模式

初识设计模式 - 桥接模式

时间:2022-09-27 09:26:11浏览次数:39  
标签:ab run 桥接 void 模式 初识 设计模式 public

简介

桥接设计模式(Bridge Design Pattern)也叫作桥梁模式,其描述是将实现和抽象放在两个不同的类层次中,使两个层次可以独立地变化。

桥接模式采用抽象关联取代了传统的多层继承,将类之间的静态继承关系转化为动态的对象组合关系,使系统更加灵活,并易于扩展,同时有效控制了系统中类的个数。

在桥接模式中,有以下概念需要理解:

  • 抽象化:将对象共同的性质抽取出去而形成类的过程
  • 实现化:和抽象化是一个互逆的过程,实现化是对抽象化事物的进一步具体化
  • 脱耦:将抽象化和实现化之间强关联改换成弱关联,将两个角色之间的继承关系改为关联关系

桥接模式主要解决的是多维度的指数级变化。

具体实现

以手机为例,手机既可以按照品牌分类,也可以按照手机软件来分类,两种维度交叉的变化远必一种维度多得多。

手机软件代码示例如下:

// 抽象类
public abstract class HandsetSoft {
    public abstract void run();
}

// 实现类
public class HandsetGame extends HandsetSoft {
    @Override
    public void run() {
        System.out.println("运行手机游戏");
    }
}

public class HandsetAddressList extends HandsetSoft {
    @Override
    public void run() {
        System.out.println("运行手机通讯录");
    }
}

手机品牌代码示例如下:

// 抽象类
public abstract class HandsetBrand {
    protected HandsetSoft soft;

    // 设置手机软件
    public void setHandsetSoft(HandsetSoft soft) {
        this.soft = soft;
    }
    // 运行
    public abstract void run();
}

// 实现类
public class HandsetBrandA extends HandsetBrand {
    @Override
    public void run() {
        soft.run();
    }
}

public class HandsetBrandB extends HandsetBrand {
    @Override
    public void run() {
        soft.run();
    }
}

客户端代码示例如下:

public class Client {
    public static void main(String[] args) {
        HandsetBrand ab;

        // A 品牌
        ab = new HandsetBrandA();
        ab.setHandsetSoft(new HandsetGame());
        ab.run();
        ab.setHandsetSoft(new HandsetAddressList());
        ab.run();

        // B 品牌
        ab = new HandsetBrandB();
        ab.setHandsetSoft(new HandsetGame());
        ab.run();
        ab.setHandsetSoft(new HandsetAddressList());
        ab.run();
    }
}

总结

优点

桥接模式的主要优点如下:

  • 实现了抽象和实现部分的分离,从而极大地提高了系统的灵活性
  • 使用桥接模式替代多层继承方案,可以减少子类的个数,降低系统的管理和维护成本
  • 桥接模式提高了系统的可扩展性,在两个维度中任意扩展一个维度,都不需要修改原有系统,符合开闭原则

缺点

桥接模式的主要缺点如下:

  • 增加了系统的理解和设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计和编程
  • 桥接模式要求正确识别出系统中两个独立变化的维度,因此其使用范围有一定的局限性

适用场景

桥接模式的适用场景如下:

  • 对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用
  • 一个类存在两个或多个独立变化的维度,且这两个或多个维度都需要独立进行扩展

源码

桥接模式是设计 Java 虚拟机和实现 JDBC 等驱动程序的核心模式之一,应用较为广泛。

标签:ab,run,桥接,void,模式,初识,设计模式,public
From: https://www.cnblogs.com/fatedeity/p/16733291.html

相关文章

  • 机器学习设计模式
    机器学习设计模式介绍设计模式是一种将专家的经验和知识记录为可行建议的方法,所有从业者都可以应用这些建议来使用久经考验的方法解决他们的问题。就像我们有传统的软件......
  • 编码中的Adapter,不仅是一种设计模式,更是一种架构理念与解决方案
    大家好,又见面了。不知道下面这玩意大家有没有见过或者使用过?这是一个插座转换器。我们都知道日常使用的是220v的交流电,而国外不同国家使用的电流电压是不一样的(比如日本使......
  • 面向机器学习工程师的 Python 设计模式:Observer
    Photoby杰森梁on不飞溅面向机器学习工程师的Python设计模式:Observer了解如何通过采用设计模式来构建代码:基于Instagram的示例介绍模式描述了一个经常出现的......
  • 【设计模式】之责任链模式
    定义责任链模式(ChainofResponsibilityPattern)中,有一条由请求处理者对象组成的链条,每个对象(除最后一个对象外)都持有下一个对象的引用,请求发送者将请求发送给第一个对象,......
  • 初识设计模式 - 代理模式
    简介概念举个简单的例说明代理模式就是:假如现在需要买一辆二手车,可以自己去找车源、做质量检测等一系列车辆过户的流程,但是这实在太浪费时间和精力了,其实可以通过找中介......
  • 设计模式---享元模式
    简述类型:结构型目的:降低对象创建时大量属性也随之被新建而带来的性能上的消耗话不多说,我们看一个案例。优化案例最初版v0现在需要采购一批办公用的电脑,以下是Compu......
  • 三层架构以及MVC设计模式
    三层架构三层架构为什么是三层?过去的软件开发种,没有三层构架,只有数据后台和前端显示,这就导致项目很难维护,还有当业务逻辑复杂时,代码量就会多得多。互联网开发的迭代优化......
  • 设计模式 -- FactoryMethod(工厂方法)
    工厂方法(FactoryMethod)定义一个用于创建对象的接口,让子类决定实例化哪个类。FactoryMethod使得一个类的实例化延迟(目的:解耦)到子类。在软件系统中,经常会面临着创建对......
  • 初识设计模式 - 原型模式
    简介对于大部分系统来说,创建对象包括申请内存、给成员变量赋值等过程,这些操作耗费的时间基本可以忽略不计。如果对象中的数据需要经过复杂的计算才能得到(比如排序、计算......
  • Steamlit初识和安装入门
    一、前言之前看我同事搭建了一个简易的网页,觉得挺有趣的,一直想学习下来着,然而机缘巧合,前阵子才知道原来是用Streamlit开发的呀,于是又开始了自己的三分钟热情了,哈哈哈......