返回顶部
首页 > 资讯 > 精选 >Java桥接模式怎么使用
  • 872
分享到

Java桥接模式怎么使用

2023-06-30 11:06:55 872人浏览 独家记忆
摘要

这篇文章主要介绍“Java桥接模式怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java桥接模式怎么使用”文章能帮助大家解决问题。其实在现实生活中,有很多类可以有两个或多个维度的变化,如图形

这篇文章主要介绍“Java桥接模式怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java桥接模式怎么使用”文章能帮助大家解决问题。

Java桥接模式怎么使用

其实在现实生活中,有很多类可以有两个或多个维度的变化,如图形既可按形状分,又可按颜色分,如果用继承方式,m 种形状和 n 种颜色的图形就有 m*n 种,不但对应的子类很多,而且扩展比较困难。

比如不同颜色和字体的文字、不同品牌和功率的汽车、不同性别和职业的男女、支持不同平台和不同文件格式的媒体播放器等。如果用桥接模式就能很好地解决这些问题。


1、桥接模式的定义

将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度

模式类型:结构设计模式

原理类图:
Java桥接模式怎么使用
原理类图说明:

  1. Client类: 桥接模式的调用者

  2. 抽象类(Abstraction) : 维护了Implementor/即它的实现类ConcretelmplementorA…二者是器合关系,Abstraction充当桥接英

  3. RehinedAbstraction: 是Abstraction抽象类的子类lmplementor:行为实现类的接口

  4. ConcretelmplementorA/B: 行为的具体实现类

  5. 从UML图: 这里的抽象类和接口是聚合的关系,其实调用和被调用关系


2、桥接模式的优缺点

优点:

  1. 抽象与实现分离,扩展能力强

  2. 符合开闭原则

  3. 符合合成复用原则

  4. 其实现细节对客户透明

缺点:

  • 由于聚合关系建立在抽象层,要求开发者针对抽象化进行设计与编程,能正确地识别出系统中两个独立变化的维度,这增加了系统的理解与设计难度


3、桥接模式的结构

桥接(Bridge)模式包含以下主要角色:

  1. 抽象化(Abstraction)角色: 定义抽象类,并包含一个对实现化对象的引用

  2. 扩展抽象化(Refined Abstraction)角色:是抽象化角色的子类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法

  3. 实现化(Implementor)角色:定义实现化角色的接口,供扩展抽象化角色调用

  4. 具体实现化(Concrete Implementor)角色:给出实现化角色接口的具体实现

结构图:

Java桥接模式怎么使用
该结构图的实现代码:

实视化角色:

public interface Implemntor {    public void OperationImpl();}

具体实现化角色:

public class ConcreteImplementorA implements Implemntor{    @Override    public void OperationImpl() {        System.out.println("具体实现化角色被访问");    }}

抽象化角色:

public abstract class Abstraction {    protected Implemntor implemntor;    protected Abstraction(Implemntor implemntor){        this.implemntor = implemntor;    }    public abstract void Operation();}

扩展抽象化角色:

public class RefinedAbstraction extends Abstraction{    protected RefinedAbstraction(Implemntor implemntor) {        super(implemntor);    }    public void Operation(){        System.out.println("扩展抽象化角色被访问");        implemntor.OperationImpl();    }}

测试类:

public class Test {    public static void main(String[] args) {        Implemntor implemntor = new ConcreteImplementorA();        Abstraction abs = new RefinedAbstraction(implemntor);        abs.Operation();    }}

输出:

扩展抽象化角色被访问具体实现化角色被访问

4 、桥接模式的案例实现

将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变

交通工具在路上行驶,这里有两个维度的变化,交通工具的类型不同路也分水泥路和柏油路

类图:
Java桥接模式怎么使用

交通工具类:

public interface Vehicle {    public void drive();}

具体的交通工具:小汽车

public class Car implements Vehicle{    @Override    public void drive() {        System.out.println("小汽车");    }}

具体的交通工具:大巴车

public class Bus implements Vehicle{    @Override    public void drive() {        System.out.println("大巴车");    }}

抽象的路:

public abstract class Road {    protected Vehicle vehicle;    public Road(Vehicle vehicle){        this.vehicle = vehicle;    }    public abstract void driveOnRoad();}

具体的路:油柏路

public class UnpavedRoad extends Road{    public UnpavedRoad(Vehicle vehicle) {        super(vehicle);    }    @Override    public void driveOnRoad() {        super.vehicle.drive();        System.out.println("行驶在油柏路");    }}

具体的路:水泥路

public class CementRoad extends Road{    public CementRoad(Vehicle vehicle) {        super(vehicle);    }    @Override    public void driveOnRoad() {        super.vehicle.drive();        System.out.println("行驶在水泥路");    }}

测试类:

//测试public class Test {    public static void main(String[] args) {        Road roadCar = new CementRoad(new Car());        roadCar.driveOnRoad();        Road roadBus = new CementRoad(new Bus());        roadBus.driveOnRoad();    }}

输出:

小汽车行驶在水泥路大巴车行驶在水泥路

5、桥接模式的注意事项

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

  2. 对于系统的高层部分,只需要知道抽象部分和实现部分的接口就可以了,其它的部分由具体业务来完成

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

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

  5. 桥接模式要求正确识别出系统中两个独立变化的维度,因此其使用范围有一定的局限性,即需要有这样的应用场景


6、桥接模式应用场景

对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用.

关于“Java桥接模式怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: Java桥接模式怎么使用

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

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

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

  • 微信公众号

  • 商务合作