返回顶部
首页 > 资讯 > 精选 >java中的桥接模式是什么
  • 523
分享到

java中的桥接模式是什么

2023-06-20 17:06:31 523人浏览 安东尼
摘要

本篇内容主要讲解“java中的桥接模式是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java中的桥接模式是什么”吧!目录引例桥接模式实战示例代码:总结引例需求:对不同手机类型的不同品牌(比

本篇内容主要讲解“java中的桥接模式是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java中的桥接模式是什么”吧!

目录
  • 引例

  • 桥接模式

  • 实战示例

    • 代码:

  • 总结

    引例

    需求:对不同手机类型的不同品牌(比如按键手机:诺基亚、翻盖手机:纽曼、智能手机:华为、小米)实现操作编程(比如: 开机、关机、打电话)。

    先来说说一般解法:将不同手机类型继承父类手机,最后各个品牌再继承对应手机类型:

    java中的桥接模式是什么

    弊端:乍一看没问题,但其实不易扩展(类爆炸),如果增加新的手机类型(比如新兴的折叠式),就需要增加各个手机品牌的类去继承(比如已继承智能手机的华为小米)。同样如果我们增加一个手机品牌,也要在各个手机样式类下增加。违反了单一职责原则,维护成本高。

    解决方案就是下面的主角:桥接模式。

    桥接模式

    桥接模式(Bridge)是一种结构型设计模式。顾名思义,就像搭个桥连接起来,通过使用封装、聚合及继承等行为让不同的类承担不同的职责,将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变,保持各部分的独立性以及应对他们的功能扩展。

    原理类图:

    java中的桥接模式是什么

    • Client类:客户端调用

    • Abstraction抽象类:充当桥接类,维护了Implementor接口(即它的实现类ConcreteImplementorA…)

    • RefindAbstraction类:是抽象类的子类

    • Implementor接口:行为实现接口

    • ConcreteImplementorA/B类:行为的具体实现类

    从UML类图看出,抽象类和接口是聚合的关系,即调用和被调用的关系。如此一来搭好桥后,具体实现类调用方法=》父类抽象类的方法=》行为接口方法=》具体接口行为实现类,以完成连接,同时两者又相互独立易扩展:

    java中的桥接模式是什么

    实战示例

    用桥接模式来解决引例的实际问题。

    类图:

    java中的桥接模式是什么

    代码:

    //接口public interface Brand {void open(); //开机void close(); //关机void call();//打电话}//接口实现类public class NOKIA implements Brand{    @Override    public void open() {        System.out.println("诺基亚手机开机");    }    @Override    public void close() {        System.out.println("诺基亚手机关机");    }    @Override    public void call() {        System.out.println("诺基亚手机打电话");    }}public class Newsmy implements Brand{    @Override    public void open() {        System.out.println("纽曼手机开机");    }    @Override    public void close() {        System.out.println("纽曼手机关机");    }    @Override    public void call() {        System.out.println("纽曼手机打电话");    }}public class Huawei implements Brand{    @Override    public void open() {        System.out.println("华为手机开机");    }    @Override    public void close() {        System.out.println("华为手机关机");    }    @Override    public void call() {        System.out.println("华为手机打电话");    }}public class Xiaomi implements Brand{    @Override    public void open() {        System.out.println("小米手机开机");    }    @Override    public void close() {        System.out.println("小米手机关机");    }    @Override    public void call() {        System.out.println("小米手机打电话");    }}
    //抽象类public abstract class Phone {private Brand brand;//手机品牌接口public Phone(Brand brand) {//构造器super();this.brand = brand;}public void open() {this.brand.open();}public void close() {this.brand.close();}public void call() { this.brand.call(); }}//抽象子类public class ButtonPhone extends Phone{    public ButtonPhone(Brand brand) {        super(brand);    }    public void open() {        super.open();        System.out.println("按键手机");    }    public void close() {        super.close();        System.out.println("按键手机");    }    public void call() {        super.call();        System.out.println("按键手机");    }}public class SlidePhone extends Phone{    public SlidePhone(Brand brand) {        super(brand);    }    public void open() {        super.open();        System.out.println("翻盖手机");    }    public void close() {        super.close();        System.out.println("翻盖手机");    }    public void call() {        super.call();        System.out.println("翻盖手机");    }}public class SmartPhone  extends Phone{    public SmartPhone(Brand brand) {        super(brand);    }    public void open() {        super.open();        System.out.println("智能手机");    }    public void close() {        super.close();        System.out.println("智能手机");    }    public void call() {        super.call();        System.out.println("智能手机");    }}
    //客户端调用public class Client {    public static void main(String[] args) {        Phone phone1 = new ButtonPhone(new NOKIA());        phone1.open();        phone1.call();        phone1.close();        System.out.println("=======================");        Phone phone2 = new SlidePhone(new Newsmy());        phone2.open();        phone2.call();        phone2.close();        System.out.println("=======================");        Phone phone3 = new SmartPhone(new Huawei());        phone3.open();        phone3.call();        phone3.close();    }}

    java中的桥接模式是什么

    总结

    • 实现了抽象和实现部分的分离,从而极大的提供了系统的灵活性,让抽象部分和实现部分独立开来,这有助于系统进行分层设计,从而产生更好的结构化系统。

    • 桥接模式替代多层继承方案,可以减少子类的个数,降低系统的管理和维护成本。

    • 桥接模式的引入增加了系统的理解和设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计和编程

    • 常见的应用场景: -JDBC驱动程序

    -银行转账系统

    转账分类: 网上转账,柜台转账,AMT转账

    转账用户类型:普通用户,银卡用户,金卡用户…

     -消息管理

    消息类型:即时消息,延时消息

    消息分类:手机短信,邮件消息,QQ消息…

    到此,相信大家对“java中的桥接模式是什么”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    --结束END--

    本文标题: java中的桥接模式是什么

    本文链接: https://www.lsjlt.com/news/298511.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • java中的桥接模式是什么
      本篇内容主要讲解“java中的桥接模式是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java中的桥接模式是什么”吧!目录引例桥接模式实战示例代码:总结引例需求:对不同手机类型的不同品牌(比...
      99+
      2023-06-20
    • PHP中的桥接模式是什么
      这篇文章主要讲解了“PHP中的桥接模式是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP中的桥接模式是什么”吧!桥接模式,在程序世界中,其实就是组合/聚合的代名词。为什么这么说呢?熟...
      99+
      2023-06-20
    • 什么是php桥接模式
      本篇内容主要讲解“什么是php桥接模式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“什么是php桥接模式”吧!说明将两个原本不相关的类结合在一起,然后利用两个类中的方法和属性,输出一份新的结果。...
      99+
      2023-06-20
    • Java设计模式中的桥接模式
      目录模式介绍UML类图桥接模式案例桥接模式的注意事项和细节常见的应用场景模式介绍 桥接模式(Bridge模式)是指:将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变。是一种...
      99+
      2024-04-02
    • php桥接模式的作用是什么
      这篇文章主要讲解了“php桥接模式的作用是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php桥接模式的作用是什么”吧!作用说明桥接模式分离抽象接口及其实现部分,实现解耦,比继承更好的解...
      99+
      2023-06-20
    • docker桥接模式的作用是什么
      Docker桥接模式(Bridge Mode)是Docker的一种网络模式,它允许容器通过一个虚拟的网络桥接器连接到宿主机的网络接口...
      99+
      2023-10-22
      docker
    • C++设计模式中的桥模式是什么
      这篇文章主要介绍了C++设计模式中的桥模式是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。单一职责模式:在软件组件的设计中,如果责任划分的不清晰,使用继承得到的结果往往是...
      99+
      2023-06-29
    • 设计模式系列之什么是桥接模式
      这篇文章主要介绍“设计模式系列之什么是桥接模式”,在日常操作中,相信很多人在设计模式系列之什么是桥接模式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”设计模式系列之什么是桥接...
      99+
      2024-04-02
    • Java设计模式之桥接模式
      本文通过老王和小王买车,引出设计模式中的结构型设计之桥接模式,接着说明设计型模式的概念和代码实现,为了加深理解,会说明适配器设计模式在JDBC中的应用,最后谈谈桥接模式和适配器模式的...
      99+
      2024-04-02
    • Java怎么实现桥接模式
      本文小编为大家详细介绍“Java怎么实现桥接模式”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java怎么实现桥接模式”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。桥接模式(Bridge Pattern)是用于...
      99+
      2023-06-27
    • Java桥接模式怎么使用
      这篇文章主要介绍“Java桥接模式怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java桥接模式怎么使用”文章能帮助大家解决问题。其实在现实生活中,有很多类可以有两个或多个维度的变化,如图形...
      99+
      2023-06-30
    • Java设计模式的桥接模式怎么实现
      这篇文章主要讲解了“Java设计模式的桥接模式怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java设计模式的桥接模式怎么实现”吧!什么是桥接模式桥接(Bridge)模式的定义如下:...
      99+
      2023-06-30
    • java设计模式--桥接模式详解
      目录引例桥接模式实战示例代码:总结引例 需求:对不同手机类型的不同品牌(比如按键手机:诺基亚、翻盖手机:纽曼、智能手机:华为、小米)实现操作编程(比如: 开机、关机、打电话)。 先来...
      99+
      2024-04-02
    • Java设计模式之java桥接模式详解
      目录一、什么是桥接模式:二、UML结构图:三、代码实现:四、JDBC源码解析-桥接模式:1、源码分析:2、源码类图:3、对 JDBC 的观点:参考博客:总结一、什么是桥接模式: 桥接...
      99+
      2024-04-02
    • Java设计模式之桥接模式的实现
      桥接模式 桥接模式是将抽象部分与它的实现部分分离,使他们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。 ...
      99+
      2024-04-02
    • Java的JDBC和桥接模式详解
      目录本文参考桥接模式的定义与特点定义:优点:缺点:桥接模式的基本结构桥接模式的应用场景JDBC源码剖析Class.forName()方法com.mysql.cj.jdbc.Drive...
      99+
      2024-04-02
    • 详解Java设计模式之桥接模式
      目录一、什么是桥接模式:二、UML结构图三、代码实现四、JDBC源码解析-桥接模式1、源码分析2、源码类3、对 JDBC 的观点一、什么是桥接模式: 桥接,顾名思义,就是用来连接两个...
      99+
      2024-04-02
    • Java设计模式之桥接模式怎么实现
      这篇文章主要介绍“Java设计模式之桥接模式怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java设计模式之桥接模式怎么实现”文章能帮助大家解决问题。一、什么是桥接模式:桥接,顾名思义,就是...
      99+
      2023-07-02
    • java如何实现桥接模式
      这篇文章将为大家详细讲解有关java如何实现桥接模式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。介绍桥接模式 (Bridge)将抽象部分与实现部分分离,使它们都可以独立的变化。桥接模式是一种结构式模式。...
      99+
      2023-05-30
      java
    • 如何理解Java设计模式的桥接模式
      这篇文章主要讲解了“如何理解Java设计模式的桥接模式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解Java设计模式的桥接模式”吧!一、什么是桥接模式桥接模式(Bridge Patt...
      99+
      2023-06-25
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作