首页 > 其他分享 >十二:桥接模式:独立发展的智慧

十二:桥接模式:独立发展的智慧

时间:2023-04-30 12:31:26浏览次数:35  
标签:String 桥接 brand 智慧 十二 模式 Device public

a. 桥接模式揭示

桥接模式是一种结构型设计模式,它的目的是将抽象与实现分离,使得它们可以独立地变化。通过将实现部分和抽象部分独立开来,我们可以更灵活地实现不同的抽象和实现,从而让它们在独立发展的同时保持低耦合。

b. 动手编程:桥接模式示例

假设我们正在设计一个电子设备商店,商店有不同品牌和类型的设备,如手机和笔记本。这里,品牌和类型是两个独立的维度,我们可以使用桥接模式来处理这种多维度变化的问题。 首先,我们创建一个设备接口,用于表示设备的抽象:

public interface Device {
    String getName();
    void setBrand(String brand);
    String getBrand();
}

然后,我们创建手机和笔记本类,分别实现 Device 接口:

public class Mobile implements Device {
    private String brand;
    private String name = "Mobile";

    public String getName() {
        return name;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getBrand() {
        return brand;
    }
}

public class Laptop implements Device {
    private String brand;
    private String name = "Laptop";

    public String getName() {
        return name;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getBrand() {
        return brand;
    }
}

接下来,我们创建一个设备制造商接口,它将充当桥接的一部分:

public interface DeviceManufacturer {
    void createDevice(Device device);
}

我们创建不同的设备制造商实现 DeviceManufacturer 接口:

public class AppleManufacturer implements DeviceManufacturer {
    public void createDevice(Device device) {
        device.setBrand("Apple");
        System.out.println("Creating an Apple " + device.getName());
    }
}

public class SamsungManufacturer implements DeviceManufacturer {
    public void createDevice(Device device) {
        device.setBrand("Samsung");
        System.out.println("Creating a Samsung " + device.getName());
    }
}

现在,我们可以使用桥接模式来创建不同品牌和类型的设备:

public class BridgePatternDemo {
    public static void main(String[] args) {
        DeviceManufacturer appleManufacturer = new AppleManufacturer();
        DeviceManufacturer samsungManufacturer = new SamsungManufacturer();

        Device mobile = new Mobile();
        Device laptop = new Laptop();

        appleManufacturer.createDevice(mobile);
        appleManufacturer.createDevice(laptop);

        samsungManufacturer.createDevice(mobile);
        samsungManufacturer.createDevice(laptop);
    }
}

c. 优缺点分析:桥接模式的双重影响

优点:

1、分离抽象和实现,使得两者可以独立发展。 2、提高了可扩展性,可以灵活地添加新的实现和抽象。 3.、实现细节对客户端透明,降低了系统的耦合度。

缺点:

1、增加了系统的理解和设计难度,需要识别出系统中两个独立变化的维度。 2、要求更高的抽象能力,不适合初学者。

d. 桥接模式在开源框架中的应用

桥接模式在许多开源框架中被广泛应用,其中一个例子是 JDBC (Java Database Connectivity)。JDBC 是一个数据库访问接口,它允许 Java 程序与多种关系型数据库进行交互。在 JDBC 中,我们可以发现桥接模式的踪迹。 JDBC 的核心是一个名为 java.sql.Driver 的接口,它为数据库连接提供了一种抽象。不同的数据库厂商提供了各自实现了 Driver 接口的驱动类,如 MySQL 的 com.mysql.jdbc.Driver,Oracle 的 oracle.jdbc.driver.OracleDriver 等。这些驱动类充当了桥接模式中的实现部分。 JDBC 提供了一个名为 java.sql.Connection 的接口,它为数据库连接提供了一种抽象。这个接口定义了一些通用的数据库操作方法,如创建语句、提交事务等。Connection 接口的实现类,如 com.mysql.jdbc.ConnectionImpl 和 oracle.jdbc.driver.OracleConnection,则依赖于具体的数据库驱动。这种设计使得 Java 程序可以在不修改代码的情况下,切换到不同的数据库。 这里,我们可以看到桥接模式将 Driver 和 Connection 分离,使得它们可以独立地变化。这种设计极大地提高了 JDBC 的扩展性和灵活性,使得 Java 程序可以与各种不同的数据库进行交互。

总结

桥接模式是一种非常实用的设计模式,它可以帮助我们处理多维度变化的问题。通过将抽象与实现分离,桥接模式让我们可以更灵活地进行系统设计,降低了系统的耦合度。虽然桥接模式在实际使用中需要更高的抽象能力,但是它为我们提供了一个优雅的解决方案,值得在合适的场景下使用。

标签:String,桥接,brand,智慧,十二,模式,Device,public
From: https://blog.51cto.com/u_13616584/6237851

相关文章

  • 智慧校园智慧教育大数据平台
    项目解决方案智慧校园基于该学校现状和发展定位,打造“5G+一平台+N应用”智慧校园解决方案,赋能教学、管理和服务升级,打造5G+智慧校园的深度应用场景,助力教育智能化发展。建设目标打造5G教育大数据平台,建设目标:5G教育大数据平台教育智脑统一身份认证一站式服务门户建设5G......
  • 如何基于AI智能技术打造智慧工厂大数据可视化管理平台​
    一、行业背景随着物联网、视频监控和人工智能等技术的快速发展和应用,利用先进技术加强信息管理和服务,是现代工厂信息化发展的新趋势。目前是传统工厂向智慧工厂转型的关键阶段,各工厂急需采用融合智能化和信息化的技术,打造集智能管理、智能生产、智能服务为一体的大数据可视化管理平......
  • ChatGPT + Raksmart云服务器:引领时代的智慧之选
    ChatGPT和Raksmart云服务器是当今互联网行业的两个炙手可热的话题。ChatGPT作为一种先进的自然语言处理技术,可用于许多领域,包括智能客服、智能翻译和自然语言生成等。Raksmart则是一家专注于提供高质量云服务器的美国公司,其服务器拥有高性能、可靠性和安全性等优点。ChatGPT和Raksm......
  • AIRIOT助力城市管廊工程,智慧物联守护城市生命线
    ​随着科技的不断革新,人工智能、大数据、物联网等新一代技术驱动的智慧城市快速发展,众多领域和行业的参随着科技的不断革新,人工智能、大数据、物联网等新一代技术驱动的智慧城市快速发展,众多领域和行业的参与者开始深入智慧城市建设,以自身优势开始推动智慧城市从“建设......
  • 第十二天打卡
    问题: 算法设计:根据问题可以计算出每个颜色球的取值范围红球为M<3,白球为N<3,黑球为8-M-N<6流程图: 源代码:#include<stdio.h>intmain(){ intm,n,number=0; for(m=0;m<=3;m++) for(n=0;n<=3;n++) if(8-m-n<=6) printf("%2d:%d%d%d\n",++number,m,n,8-m-n); return0;......
  • 我的第一个项目(十二) :分数和生命值的更新(后端增删查改的"改")
    好家伙,写后端,这多是一件美逝.关于这个项目的代码前面的博客有写 我的第一个独立项目-随笔分类-养肥胖虎-博客园(cnblogs.com) 现在,我们登陆进去了,我开始和敌人战斗,诶,打到一百分了,我现在要把这个分数保存起来  1.前端先把测试样例写好 随便写一个测试样......
  • Django笔记三十二之session登录验证操作
    本文首发于公众号:Hunter后端原文链接:Django笔记三十二之session登录验证操作这一篇笔记将介绍session相关的内容,包括如何在系统中使用session,以及利用session实现登录认证的功能。这篇笔记将分为以下几个内容:session的使用流程session的配置和相关方法users模块......
  • 新能源数字化 智慧充电桩三维可视化运维平台
    放眼全球,近十年来,新能源汽车赛道堪称“热得发烫”。伴随着进入成年期的新能源汽车行业对相关配套设备支撑水平的提升,作为其“新基建”的充电桩领域表现更为突出的价值势能。过去,在一系列补贴政策和资本刺激下,充电桩玩家都在跑马圈地抢占市场。建设背景市场背景截至2022年6月底,......
  • TSINGSEE城市“一网统管”平台—智慧平安小区的场景应用
    随着城市建设进程的不断加快,关于城市的智能化治理需求也随之增多。在国家发布的“十四五”规划中,已经明确指出,推进新型城市建设,推行城市运行一网统管。作为推动城市治理体系和治理能力现代化的重要探索,“一网统管”将成为关键基础工程。“一网统管”的本质,是指充分运用大数据、云......
  • 新品首发丨计讯物联5G水利遥测终端机TY511-B3,推动5G+智慧水利再进化
    当前,水利在全面感知、全面互联、智慧应用等方面较其他行业存在明显差距。基于物联网行业通信技术的不断突破和水利行业对高速移动通信的强烈需求,5G移动通信以高速率、大带宽、低时延、广连接等特点让水利数据快速高效地传输成为可能,逐渐成为水利行业高质量发展的重要驱动力量。计......