Java设计模式之java桥接模式详解

yizhihongxing

Java设计模式之java桥接模式详解

什么是Java桥接模式?

Java桥接模式是23种常用的设计模式之一,也称为桥梁模式。它是一个两层结构,其中底层定义了实现,而高层定义了抽象。抽象层通过委托调用实现层中的方法,以实现业务需求。这种模式可以将抽象部分与它的实现部分分离,使它们可以独立地变化。

应用场景

Java桥接模式常用于以下场景:

  • 当需要避免使用由于多重继承导致的类层次结构扩展时;
  • 当希望在抽象部分和实现部分之间建立一个稳定的联系,以便在两者之间随时切换时;
  • 当希望改变一个已有的类的实现接口时;
  • 当将实现部分与抽象部分分离开来,以便两者可以独立地进行变化时。

代码实现

抽象类

首先,我们需要定义一个抽象类,它会委托实现类中的方法来完成具体业务操作。抽象类定义了一个成员变量 im,其类型为 Implementor,表示实现类,以及一个抽象方法 operation()

public abstract class Abstraction {
    protected Implementor im;

    protected Abstraction(Implementor im) {
        this.im = im;
    }

    public abstract void operation();
}

抽象类的具体实现类

我们接着定义一个具体实现类,它继承自上述定义的抽象类,并实现了 operation() 方法:

public class RefinedAbstraction extends Abstraction {
    protected RefinedAbstraction(Implementor im) {
        super(im);
    }

    @Override
    public void operation() {
        System.out.println("RefinedAbstraction.operation()");
        im.operationImp();
    }
}

其中,operation() 方法打印一条消息,然后通过委托调用实现类的 operationImp() 方法来完成业务操作。

实现类

接下来,我们定义一个实现类,它实现了 Implementor 接口:

public interface Implementor {
    void operationImp();
}

public class ConcreteImplementorA implements Implementor {
    @Override
    public void operationImp() {
        System.out.println("ConcreteImplementorA.operationImp()");
    }
}

public class ConcreteImplementorB implements Implementor {
    @Override
    public void operationImp() {
        System.out.println("ConcreteImplementorB.operationImp()");
    }
}

实现类中实现了 operationImp() 方法,该方法打印一条消息。

示例

下面是一个使用 Java 桥接模式的示例:

Implementor impleA = new ConcreteImplementorA();
Abstraction abs = new RefinedAbstraction(impleA);
abs.operation();

Implementor impleB = new ConcreteImplementorB();
abs = new RefinedAbstraction(impleB);
abs.operation();

输出结果为:

RefinedAbstraction.operation()
ConcreteImplementorA.operationImp()
RefinedAbstraction.operation()
ConcreteImplementorB.operationImp()

该示例中,我们先创建了一个 ConcreteImplementorA 类型的实现类,并传递给 RefinedAbstraction 抽象类,然后调用 operation() 方法,输出了一条消息和 ConcreteImplementorA.operationImp() 方法的结果。

接着,我们创建了一个 ConcreteImplementorB 类型的实现类,并传递给 RefinedAbstraction 抽象类,再次调用 operation() 方法,输出了一条消息和 ConcreteImplementorB.operationImp() 方法的结果。

总结

Java桥接模式可将抽象部分与它的实现部分分离,使它们可以独立地变化。该模式通常用于需要独立变化不同的实现部分时,如操作系统平台和操作系统接口的变化等。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java设计模式之java桥接模式详解 - Python技术站

(0)
上一篇 2023年6月16日
下一篇 2023年6月16日

相关文章

  • spring整合JMS实现同步收发消息(基于ActiveMQ的实现)

    下面我将给您详细讲解“spring整合JMS实现同步收发消息(基于ActiveMQ的实现)”的完整攻略。 什么是JMS JMS(Java Messaging Service)是Java EE标准的消息中间件API。它提供了一种发送和接收消息的标准方法,以及处理和管理消息的机制。 什么是ActiveMQ ActiveMQ是一款常用的基于JMS的开源消息中间件,…

    Java 2023年5月20日
    00
  • SpringBoot后端接口的实现(看这一篇就够了)

    “SpringBoot后端接口的实现(看这一篇就够了)”是一篇非常实用的文章,主要讲解了如何使用SpringBoot快速实现后端接口的开发。我将根据文章的内容为您提供一份完整攻略,帮助您理解和应用这篇文章。 1. 前置知识 在进行这个教程之前,您需要具备以下知识:- Java语言基础- SpringBoot框架基础- RESTful API的基本概念- Sp…

    Java 2023年5月15日
    00
  • IDEA 2019.2.2配置Maven3.6.2打开Maven项目出现 Unable to import Maven project的问题

    下面是针对 “IDEA 2019.2.2配置Maven3.6.2打开Maven项目出现 Unable to import Maven project的问题”的攻略: 问题背景 在使用 IntelliJ IDEA 2019.2.2 配置 Maven 3.6.2 并打开 Maven 项目时,存在无法导入 Maven 项目的问题。 解决方案 第一步:确认 Mave…

    Java 2023年5月20日
    00
  • IE 浏览器安全级别详情及区别小结

    IE 浏览器安全级别详情及区别小结 什么是IE浏览器安全级别? IE浏览器安全级别是指对网页内容和活动的控制程度。安全级别越高,可授予的网页内容和活动越少。 IE浏览器安全级别的五个等级 高(不建议使用):阻止所有网站活动,包括所有弹出窗口和 ActiveX 控件。可能会防止某些网站正常工作,而且甚至可能会阻止升级或修复某些程序。使用高安全级别时,必须手动添…

    Java 2023年5月23日
    00
  • java单点登录(SSO)的实现

    下面我将详细讲解Java单点登录(SSO)的实现攻略,主要分为以下几个步骤: 步骤一:准备工作 我们需要准备以下工具和环境: JDK 1.8或以上版本 Maven 3.0或以上版本 Servlet容器,如Tomcat或Jetty Spring Boot 2.0或以上版本 步骤二:配置SSO服务器和客户端 配置SSO服务器我们需要在SSO服务器上做以下配置: …

    Java 2023年5月18日
    00
  • Java 实现简易教务管理系统的代码

    Java 实现简易教务管理系统的代码攻略 简介 本文将介绍如何使用 Java 语言实现一个简易的教务管理系统,包括项目结构、涉及的技术、代码实现等方面的内容。 准备工作 在开始之前,我们需要做好以下准备工作: 安装 JDK(Java Development Kit) 安装 IDE(Integrated Development Environment,比如 E…

    Java 2023年5月19日
    00
  • Spring boot搭建web应用集成thymeleaf模板实现登陆

    下面就是详细讲解Spring Boot搭建Web应用集成Thymeleaf模板实现登录的攻略。 1. 新建Spring Boot项目 首先,打开IDE,新建一个Spring Boot项目。在Maven项目的pom.xml中添加thymeleaf依赖: <dependency> <groupId>org.springframework.…

    Java 2023年5月20日
    00
  • 基于SpringBoot开机启动与@Order注解

    基于Spring Boot开机启动与@Order注解 在Spring Boot应用程序中,我们可以使用@Order注解来指定Bean的加载顺序。此外,我们还可以使用Spring Boot的开机启动功能,在应用程序启动时自动执行一些任务。本文将介绍如何使用@Order注解和开机启动功能。 @Order注解 @Order注解是Spring框架提供的一个注解,用于…

    Java 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部