Java结构型模式之桥接模式详解

Java结构型模式之桥接模式详解

概述

桥接模式是一种用于软件设计的结构型模式,最早由著名的设计模式书籍《设计模式:可复用面向对象软件的基础》中的Gamma等人提出。

桥接模式的主要目的是将抽象部分和实现部分分离,分别放在不同的类层次结构中,从而实现它们之间的独立变换。通过分离抽象部分和实现部分,可以使它们可以相对独立地变化,从而可以大大降低它们之间的耦合度,提高系统的可扩展性、可维护性。

结构

桥接模式的主要结构包括如下几个角色:

Abstraction(抽象部分)

抽象部分为桥接模式中的抽象类。它定义了一些抽象方法和属性,定义了一个指向 Implementor 类型对象的指针,但并不实现具体的方法,而是委派给 Implementor 类来实现。

RefinedAbstraction(扩充抽象)

扩充抽象是对抽象部分的具体实现。它实现了在抽象部分中定义的抽象方法,同时可以通过组合其他的类扩展自己的功能。

Implementor(实现部分)

实现部分是桥接模式中的实现类。它定义了一些基本的操作,但并不提供具体的实现。这些操作要交由 ConcreteImplementor 类来实现。

ConcreteImplementor(具体实现)

具体实现是实现部分的具体类。它对实现部分的操作进行了具体实现。

示例

下面是一个简单的示例,利用桥接模式实现不同颜色和形状的图形绘制:

// Implementor
interface Color {
    void applyColor();
}

// ConcreteImplementor
class Red implements Color {
    @Override
    public void applyColor() {
        System.out.println("red");
    }
}

class Blue implements Color {
    @Override
    public void applyColor() {
        System.out.println("blue");
    }
}

// Implementor
interface Shape {
    void draw();
}

// RefinedAbstraction
abstract class ShapeWithColor implements Shape {
    protected Color color;

    public ShapeWithColor(Color color) {
        this.color = color;
    }

    @Override
    public void draw() {
        color.applyColor();
        drawShape();
    }

    abstract void drawShape();
}

// ConcreteImplementor
class Circle extends ShapeWithColor {
    public Circle(Color color) {
        super(color);
    }

    @Override
    void drawShape() {
        System.out.println("draw a circle");
    }
}

class Square extends ShapeWithColor {
    public Square(Color color) {
        super(color);
    }

    @Override
    void drawShape() {
        System.out.println("draw a square");
    }
}

在上面的示例中,我们定义了两个 Implementor:Color 和 Shape,它们代表了颜色和图形的基本操作。我们还定义了两个 ConcreteImplementor:Red 和 Blue,分别代表了红色和蓝色。

在抽象部分中,我们定义了一个 ShapeWithColor 类,它基于 Shape 类型,同时需要一个 Color 类型的参数。它实现了 draw 方法,但具体的图形绘制操作 drawShape 需要由子类来实现。

最后,我们实现了两个扩充抽象:Circle 和 Square,它们代表了具体的图形。它们都继承了 ShapeWithColor 类型,因此可以在绘制图形时先绘制颜色。

下面是一个使用示例:

public static void main(String[] args) {
    Shape circle = new Circle(new Red());
    circle.draw();  // 输出 red draw a circle

    Shape square = new Square(new Blue());
    square.draw();  // 输出 blue draw a square
}

第一行代码创建了一个圆形,使用红色绘制。第二行代码创建了一个正方形,使用蓝色绘制。在执行 draw 方法时,输出了对应的颜色和图形类型。

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

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Servlet实现文件上传,可多文件上传示例

    Servlet实现文件上传 Servlet是Java Web开发中非常常用的技术,它可以实现各种业务需求。其中,文件上传就是Web开发中非常常见的需求之一。 本文将详细讲解如何通过Servlet实现文件上传功能,并提供多文件上传的示例说明。 实现步骤: 在JSP页面中添加文件上传标签,如下所示: <form action="upload&qu…

    Java 2023年6月15日
    00
  • 魔兽世界宝珠全部一览_魔兽世界相关专业技能提升详解

    魔兽世界宝珠全部一览 什么是魔兽世界宝珠? 魔兽世界宝珠是一种特殊物品,可以用于提升魔兽世界角色的相关专业技能水平。每个角色可以拥有多个宝珠,在游戏中进行合成、升级、替换等操作。 如何获取魔兽世界宝珠? 魔兽世界宝珠可以从游戏中的多个途径中获得,包括但不限于: 通过完成任务或者副本挑战获得 通过游戏商城购买获得 通过交换、交易等方式获取 宝珠种类及效果 魔兽…

    Java 2023年6月15日
    00
  • spring boot整合jsp及设置启动页面的方法

    下面是详细讲解“spring boot整合jsp及设置启动页面的方法”的完整攻略: 1. 添加依赖 要使用JSP,需要在pom.xml文件中添加以下依赖项: <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-em…

    Java 2023年6月15日
    00
  • Spring和Mybatis整合的原理详解

    以下是 “Spring和Mybatis整合的原理详解” 的完整攻略。 什么是Spring和Mybatis整合 Spring和Mybatis整合,指的是将Spring和Mybatis两个框架结合起来使用,达到更好的开发效率和更好的应用性能。Spring提供了IoC(控制反转)和AOP(面向切面编程)的支持,而Mybatis则提供了基于注解和XML配置的ORM(…

    Java 2023年5月20日
    00
  • 详解SpringMVC和MyBatis框架开发环境搭建和简单实用

    详解SpringMVC和MyBatis框架开发环境搭建和简单实用 为了搭建SpringMVC和MyBatis的开发环境,需要准备Java、Maven、Tomcat等软件的安装。下面将张贴详细的步骤和示例代码,帮助您轻松地完成搭建过程。 1. 安装Java环境 在官网上下载合适版本的Java JDK,并进行安装。安装完成后,在环境变量中配置JAVA_HOME路…

    Java 2023年6月15日
    00
  • Java9新特性Module模块化编程示例演绎

    Java9新特性Module模块化编程示例演绎攻略 什么是模块化编程 在Java9之前,我们编写的Java应用程序都是基于jar包的。当我们开发大型应用时,常常面临着依赖管理不可控、类冲突等问题。而Java9引入了一种新的编程方式——模块化编程。在模块化编程中,我们可以将应用程序拆分成多个独立的模块,并对每个模块进行依赖管理。这种方式能够让应用程序更加灵活、…

    Java 2023年5月26日
    00
  • Hibernate对数据库删除、查找、更新操作实例代码

    下面就是详细讲解 Hibernate 对数据库删除、查找、更新操作实例代码的完整攻略。 什么是 Hibernate Hibernate 是一个开源的、高性能的 Java ORM(对象关系映射)框架。它可以让我们通过面向对象的方式进行数据库操作,避免了 SQL 语句难以管理和维护的问题。 使用Hibernate,我们可以通过定义 Java 类与数据库表的映射关…

    Java 2023年5月19日
    00
  • Maven+oracle+SSM搭建简单项目的方法

    下面是关于“Maven+oracle+SSM搭建简单项目的方法”的完整攻略,包含两个示例说明。 Maven+oracle+SSM搭建简单项目的方法 Maven+oracle+SSM是一种常用的Java Web开发框架,它可以帮助开发者快速搭建Java Web应用程序。本文将介绍如何使用Maven+oracle+SSM搭建简单项目。 环境准备 在开始之前,我们…

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