返回顶部
首页 > 资讯 > 后端开发 > Python >Java结构型设计模式之桥接模式详细讲解
  • 476
分享到

Java结构型设计模式之桥接模式详细讲解

2024-04-02 19:04:59 476人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录桥接模式概述应用场景优缺点主要角色桥接模式的基本使用创建实现角色创建具体实现角色创建抽象角色创建修正抽象角色客户端调用桥接模式实现消息发送创建实现角色创建具体实现角色创建抽象角色

桥接模式

概述

桥接模式(Bridge Pattern)也称为桥梁模式、接口(Interfce)模式或柄体(Handle and Body)模式,属于结构型模式。

它是将抽象部分与它的具体实现部分分离,使它们都可以独立地变化。

桥接模式主要目的是通过组合的方式建立两个类之间的联系,而不是继承。桥接模式的核心在于解耦抽象和实现。

应用场景

当一个类内部具备两种或多种变化维度时,使用桥接模式可以解耦这些变化的维度,使高层代码架构隐定。

适用业务场景:

1.在抽象和具体实现之间需要增加更多的灵活性的场景。

2.一个类存在两个(或多个)独立变化的维度,而这两个(或多个)维度都需要独立进行扩展。

3.不希望使用继承,或因为多层继承导致系统类的个数剧增。

优缺点

优点:

1.分离抽象部分及其具体实现部分

2.提高了系统的扩展性

3.实现细节对客户透明

缺点:

1.增加了系统的理解与设计难度

2.需要正确地识别系统中两个独立变化的维度

主要角色

1.抽象(Abstraction)

该类持有一个对实现角色的引用,抽象角色中的方法需要实现角色来实现。抽象角色一般为抽象类(构造函数规定子类要传入一个实现对象)。

2.修正抽象(RefinedAbstraction)

抽象的具体实现,对抽象的方法进行完善和扩展。

3.实现(Implementor)

确定实现维度的基本操作,提供给抽象使用。该类一般为接口或抽象类。

1.具体实现(Concretelmplementor)

实现的具体实现。

桥接模式的基本使用

创建实现角色

public interface IImplementor {
    void operationImpl();
}

创建具体实现角色

public class ConcreteImplementorA implements IImplementor {
    public void operationImpl() {
        System.out.println("ConcreteImplementorA operationImpl");
    }
}
public class ConcreteImplementorB implements IImplementor {
    public void operationImpl() {
        System.out.println("ConcreteImplementorB operationImpl");
    }
}

创建抽象角色

public abstract class Abstraction {
    protected IImplementor mImplementor;
    public Abstraction(IImplementor implementor) {
        this.mImplementor = implementor;
    }
    public void operation() {
        this.mImplementor.operationImpl();
    }
}

创建修正抽象角色

public class RefinedAbstraction extends Abstraction {
    public RefinedAbstraction(IImplementor implementor) {
        super(implementor);
    }
    @Override
    public void operation() {
        super.operation();
        System.out.println("RefinedAbstraction operation");
    }
}

客户端调用

    public static void main(String[] args) {
        // 来一个实现化角色
        IImplementor impA = new ConcreteImplementorA();
        IImplementor impB = new ConcreteImplementorB();
        // 来一个抽象化角色,聚合实现
        Abstraction absA = new RefinedAbstraction(impA);
        Abstraction absB = new RefinedAbstraction(impB);
        // 执行操作
        absA.operation();
        absB.operation();
    }

ConcreteImplementorA operationImpl
RefinedAbstraction operation
ConcreteImplementorB operationImpl
RefinedAbstraction operation

桥接模式实现消息发送

使用桥接模式解耦消息类型与消息重要程度。

创建实现角色

创建实现角色,担任桥接角色,实现消息发送的统一接口

public interface IMessage {
    void send(String message);
}

创建具体实现角色

public class EmailMessage implements IMessage {
    @Override
    public void send(String message) {
        System.out.println("使用邮件消息发送" + message);
    }
}
public class SmsMessage implements IMessage {
    @Override
    public void send(String message) {
        System.out.println("使用短信消息发送" + message);
    }
}

创建抽象角色

创建抽象角色,担任桥接抽象角色,持有实现角色,且发送消息委派给实现对象发送

public abstract class AbastractMessage {
    // 持有实现角色的引用
    private IMessage message;
    // 构造函数,传入实现角色的引用
    public AbastractMessage(IMessage message) {
        this.message = message;
    }
    // 发送消息的方法,调用实现角色的方法
    void sendMessage(String message){
        this.message.send(message);
    }
}

创建修正抽象角色

创建普通消息

public class NomalMessage extends AbastractMessage {
    public NomalMessage(IMessage message) {
        super(message);
    }
}

创建重要消息

public class ImportanceMessage extends AbastractMessage {
    public ImportanceMessage(IMessage message) {
    	message = message + "【重要消息】";
        super(message);
    }
    void sendMessage(String message){
        super.sendMessage(message);
    }
}

客户端调用

    public static void main(String[] args) {
        IMessage message = new EmailMessage();
        AbastractMessage abastractMessage = new NomalMessage(message);
        abastractMessage.sendMessage("hello world");
        message = new SmsMessage();
        abastractMessage = new ImportanceMessage(message);
        abastractMessage.sendMessage("hello world");
    }

使用邮件消息发送hello world
使用短信消息发送hello world【重要消息】

到此这篇关于Java结构型设计模式之桥接模式详细讲解的文章就介绍到这了,更多相关Java桥接模式内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java结构型设计模式之桥接模式详细讲解

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

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

猜你喜欢
  • Java结构型设计模式之桥接模式详细讲解
    目录桥接模式概述应用场景优缺点主要角色桥接模式的基本使用创建实现角色创建具体实现角色创建抽象角色创建修正抽象角色客户端调用桥接模式实现消息发送创建实现角色创建具体实现角色创建抽象角色...
    99+
    2024-04-02
  • Java结构型模式之桥接模式详解
    目录一.介绍二.场景理解三.UML类图四.具体代码五.优缺点六.使用场景一.介绍 桥接模式(Bridge Pattern)属于结构型模式。用于将抽象与其实现解耦,使得二者可以独立变化...
    99+
    2023-02-17
    Java结构型模式 Java桥接模式
  • 详解PHP结构型设计模式之桥接模式BridgePattern
    目录桥接模式(Bridge Pattern)是什么桥接模式的优点桥接模式的实现桥接模式的使用总结桥接模式(Bridge Pattern)是什么 桥接模式是一种结构型模式,它将抽象部分...
    99+
    2023-05-15
    PHP桥接模式 PHP结构型模式
  • .Net结构型设计模式之桥接模式(Bridge)
    目录一、动机(Motivation)二、意图(Intent)三、结构(Structure)四、模式的组成五、桥接模式的具体代码实现六、桥接模式的实现要点:1、桥接模式的优点:2、桥接...
    99+
    2024-04-02
  • 详解Java设计模式之桥接模式
    目录一、什么是桥接模式:二、UML结构图三、代码实现四、JDBC源码解析-桥接模式1、源码分析2、源码类3、对 JDBC 的观点一、什么是桥接模式: 桥接,顾名思义,就是用来连接两个...
    99+
    2024-04-02
  • Java设计模式之java桥接模式详解
    目录一、什么是桥接模式:二、UML结构图:三、代码实现:四、JDBC源码解析-桥接模式:1、源码分析:2、源码类图:3、对 JDBC 的观点:参考博客:总结一、什么是桥接模式: 桥接...
    99+
    2024-04-02
  • Golang设计模式中的桥接模式详细讲解
    目录桥接模式概念示例桥接模式 桥接是一种结构型设计模式, 可将业务逻辑或一个大类拆分为不同的层次结构, 从而能独立地进行开发。 层次结构中的第一层 (通常称为抽象部分) 将包含对第二...
    99+
    2023-01-11
    Go桥接模式 Go设计模式
  • Java 超详细讲解设计模式之原型模式讲解
    目录传统方式原型模式基本介绍原型模式在spring框架中源码分析深入讨论-浅讨论和深拷贝原型模式的注意事项和细节传统方式 克隆羊问题 现在有一只羊 tom,姓名为: tom,年龄为:...
    99+
    2024-04-02
  • Python设计模式中的结构型桥接模式
    目录一、桥接模式二、应用场景三、代码示例一、桥接模式 桥接模式,希望能够将一个事物的两个维度分离(解耦),使其都可以独立地变化,并通过桥梁连接起来。 (类)抽象部分(Abstract...
    99+
    2024-04-02
  • java设计模式--桥接模式详解
    目录引例桥接模式实战示例代码:总结引例 需求:对不同手机类型的不同品牌(比如按键手机:诺基亚、翻盖手机:纽曼、智能手机:华为、小米)实现操作编程(比如: 开机、关机、打电话)。 先来...
    99+
    2024-04-02
  • .Net结构型设计模式之桥接模式怎么实现
    本篇内容介绍了“.Net结构型设计模式之桥接模式怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、动机(Motivation)在很多...
    99+
    2023-06-30
  • PHP结构型设计模式之桥接模式怎么实现
    本篇内容介绍了“PHP结构型设计模式之桥接模式怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!桥接模式(Bridge Pattern)...
    99+
    2023-07-05
  • Java设计模式之桥接模式
    本文通过老王和小王买车,引出设计模式中的结构型设计之桥接模式,接着说明设计型模式的概念和代码实现,为了加深理解,会说明适配器设计模式在JDBC中的应用,最后谈谈桥接模式和适配器模式的...
    99+
    2024-04-02
  • 详解PHP设计模式之桥接模式
    目录简介适用场景优点缺点扩展案例代码抽象代码简介 桥接模式又叫桥梁模式,属于结构型模式。目的是将抽象与实现分离,使它们都可以独立的变化,解耦。继承有很多好处,但是会增加耦合,而桥接模...
    99+
    2022-12-20
    PHP桥接模式 PHP设计模式
  • Java结构型设计模式之装饰模式详解
    目录介绍实现优缺点介绍 意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更灵活。 主要解决:我们扩展一个类常使用继承方式实现,由于继承为类引入静态特征,...
    99+
    2023-05-14
    Java设计模式装饰模式 Java装饰模式
  • Java结构型设计模式之组合模式详解
    目录组合模式应用场景优缺点主要角色组合模式结构分类透明组合模式创建抽象根节点创建树枝节点创建叶子节点客户端调用安全组合模式创建抽象根节点创建树枝节点创建叶子节点客户端调用组合模式 组...
    99+
    2024-04-02
  • Golang设计模式之原型模式详细讲解
    目录原型模式概念示例原型模式 原型是一种创建型设计模式, 使你能够复制对象, 甚至是复杂对象, 而又无需使代码依赖它们所属的类。 所有的原型类都必须有一个通用的接口, 使得即使在对象...
    99+
    2023-01-11
    Go原型模式 Go设计模式
  • Java设计模式之桥接模式的示例详解
    目录定义案例需求方案一方案二对比分析总结定义 桥梁模式是对象的结构模式。又称为柄体(Handle and Body)模式或接口(Interface)模式。桥梁模式的用意是&ldquo...
    99+
    2024-04-02
  • 设计模式——桥接模式详解
    🚀桥接模式(抽象与实现分离) 1.1⭐桥接模式的定义 维基百科:桥接模式是软件设计模式中最复杂的模式之一,它把事物对象和其具体行为、具体特征分离开来,使它们可以各自独立的变化。 百度百...
    99+
    2023-10-11
    设计模式 桥接模式 java
  • Java结构型设计模式之适配器模式详解
    目录适配器模式分类应用场景优缺点主要角色类适配器创建目标角色(Target)创建源角色(Adaptee)创建适配器(Adapter)客户端调用对象适配器创建目标角色(Target)创...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作