本文介绍: 这篇教程不仅提供了桥接模式的理论基础,还通过具体的Java代码示例展示如何实现应用这种模式。简单理解,通俗易懂

引言

想象你正在开发一个图形界面应用程序需要支持多种不同窗口操作系统。如果每个系统需要一套代码,那将是多么繁琐!桥接模式让这一切变得简单:它分离应用程序界面抽象部分)和实际操作操作系统实现部分)。

桥接模式简介

桥接模式属于结构型模式,桥接模式是一种用于抽象化与实现化解耦,使得二者可以独立变化的设计模式。它通过提供抽象层和实现层之间的桥接结构,来实现这种分离

定义与用途:

实现方式

使用场景

优势与劣势

桥接模式在Spring中的应用

数据访问对象(DAO)和数据源:Spring中的数据访问对象(DAO)模式与桥接模式有着紧密的联系。DAO提供了一组与特定数据源(如JDBC、Hibernate等)独立的接口,而这些数据源则是其实现。这允许开发者不同持久技术切换,而不需要修改DAO层的代码例如,一个应用可以使用JDBC切换到Hibernate,DAO接口保持不变,只需更换其具体实现。

视图控制器分离:在Spring MVC中,桥接模式通过将视图(HTML、JSP等)与控制逻辑分离来实现。控制处理业务逻辑然后通过模型(Model)将数据桥接到视图层。这种分离允许开发者独立修改视图控制代码,提高了代码可维护性和可测试性。

AOP(面向切面编程):Spring的AOP也是桥接模式的一个例子。AOP允许开发者定义跨多个点的横切关注点(如日志安全等),并将这些关注点与业务逻辑核心功能)分离。在AOP中,切面(Aspect)充当桥梁连接独立于核心业务逻辑的横切关注点。

Spring配置与实现分离:Spring框架允许通过配置文件注解将具体的实现与抽象的定义分离。这种分离是桥接模式的一个体现,它允许开发者在不修改代码的情况下更换组件的实现,提高了系统的灵活性和可配置性。

绘图示例

在此示例中,我们通过一个名为 DrawAPI 的接口来实现桥接模式,该接口作为桥接实现者,并且有两个具体类 RedCircle 和 GreenCircle 实现了 DrawAPI 接口。Shape 是一个抽象类,它将使用 DrawAPI 接口对象。BridgePatternDemo我们演示类)将使用 Shape 类来绘制不同颜色的圆。
在这里插入图片描述
步骤 1: 创建桥接实现者接口

public interface DrawAPI {

    public void drawCircle(int radius, int x, int y);

}

步骤 2: 创建实现 DrawAPI 接口的具体桥接实现类。

public class RedCircle implements DrawAPI {

    @Override
    public void drawCircle(int radius, int x, int y) {
        System.out.println("绘制圆形[ 颜色: 红色, 半径: " + radius + ", x: " + x + ", y: " + y + "]");
    }

}
public class GreenCircle implements DrawAPI {

    @Override
    public void drawCircle(int radius, int x, int y) {
        System.out.println("绘制圆形[ 颜色: 绿色, 半径: " + radius + ", x: " + x + ", y: " + y + "]");
    }

}

步骤 3: 创建使用 DrawAPI 接口的抽象类 Shape

public abstract class Shape {
   protected DrawAPI drawAPI;
   
   protected Shape(DrawAPI drawAPI){
      this.drawAPI = drawAPI;
   }
   public abstract void draw();	
}

步骤 4: 创建实现 Shape 接口的具体类。

public class Circle extends Shape {
   private int x, y, radius;

   public Circle(int x, int y, int radius, DrawAPI drawAPI) {
      super(drawAPI);
      this.x = x;  
      this.y = y;  
      this.radius = radius;
   }

   public void draw() {
      drawAPI.drawCircle(radius, x, y);
   }
}

步骤 5: 使用 Shape 和 DrawAPI 类绘制不同颜色的圆。

public class BridgePatternDemo {
   public static void main(String[] args) {
      Shape redCircle = new Circle(100, 100, 10, new RedCircle());
      Shape greenCircle = new Circle(100, 100, 10, new GreenCircle());

      redCircle.draw();
      greenCircle.draw();
   }
}

在这里插入图片描述
这个示例中,通过桥接模式,我们可以独立地改变抽象部分(Shape)和实现部分(DrawAPI)的代码。当我们想要改变圆的绘制方式时,只需要修改或增加新的 DrawAPI 实现类,而不需要改变 Shape 类及其子类

代码地址

23种设计模式相关代码后续会逐步提交github上,方便学习,欢迎指点:
代码地址
https://github.com/RuofeiSun/lf-23Pattern

原文地址:https://blog.csdn.net/qq_33129875/article/details/134734008

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_30718.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注