首页 > 其他分享 >带你深入浅出设计模式:十二、桥接模式:连接抽象与实现的桥梁

带你深入浅出设计模式:十二、桥接模式:连接抽象与实现的桥梁

时间:2024-10-10 15:19:18浏览次数:11  
标签:卡车 桥接 Car 深入浅出 drive 驱动 设计模式 public

此为设计模式十二谈!

总-分-总的结构生活化的例子给你讲解设计模式!

码农不易,各位学者学到东西请点赞收藏支持支持!

开始部分:

总:桥接模式的本质是将抽象部分与它的实现部分分离,使它们都能独立地变化。

分:

1.老规矩,自行打开VS创建一个控制台应用程序

2.实现编码,这里以汽车和驱动系统为例子辅助理解

2.1 汽车抽象类

2.2 驱动实现接口,可分为汽油驱动、电机驱动

2.3 汽车具体类,可分为轿车、卡车

2.4 实现桥接,轿车使用电机驱动,卡车使用汽油驱动,也可以调转轿车使用汽油驱动,卡车使用电机驱动

#include <iostream>

// 驱动系统接口
class IDriveSystem {
public:
    virtual void drive() = 0;
};

// 汽油驱动
class PetrolDrive : public IDriveSystem {
public:
    void drive() override {
        std::cout << "汽油驱动:轰鸣的引擎声。\n";
    }
};

// 电动驱动
class ElectricDrive : public IDriveSystem {
public:
    void drive() override {
        std::cout << "电动驱动:安静的电机声。\n";
    }
};

// 汽车抽象类
class Car {
protected:
    IDriveSystem* driveSystem;
public:
    Car(IDriveSystem* ds) : driveSystem(ds) {}

    virtual void drive() = 0;
};

// 轿车
class Sedan : public Car {
public:
    Sedan(IDriveSystem* ds) : Car(ds) {}

    void drive() override {
        std::cout << "轿车:";
        driveSystem->drive();
    }
};

// 卡车
class Truck : public Car {
public:
    Truck(IDriveSystem* ds) : Car(ds) {}

    void drive() override {
        std::cout << "卡车:";
        driveSystem->drive();
    }
};

int main() {
    // 创建汽车和驱动组合
    Car* sedanElectric = new Sedan(new ElectricDrive()); // 轿车使用电动驱动
    Car* truckPetrol = new Truck(new PetrolDrive()); // 卡车使用汽油驱动

    // 驱动汽车
    sedanElectric->drive(); // 输出:轿车:安静的电机声。
    truckPetrol->drive(); // 输出:卡车:轰鸣的引擎声。

    // 清理
    delete sedanElectric;
    delete truckPetrol;

    return 0;
}

总:桥接模式的应用场景:当一个类内部具备两种或多种变化维度时,使用桥接模式来解耦。

标签:卡车,桥接,Car,深入浅出,drive,驱动,设计模式,public
From: https://blog.csdn.net/weixin_68122199/article/details/142821979

相关文章

  • 带你深入浅出设计模式:十一、组合实体模式:软件世界的乐高积木
    此为设计模式第十一谈!用总-分-总的结构和生活化的例子给你讲解设计模式!码农不易,各位学者学到东西请点赞收藏支持支持!开始部分:总:组合模式的目的:让客户端不再区分操作的是组合对象还是叶子对象,都以一个统一的方式来操作。分:1.老规矩,自行在vs创建一个控制台应用2.实现......
  • 深入浅出:API接口的使用方法
    在数字化时代,API接口扮演着越来越重要的角色,它使得不同软件间的数据交换和功能整合变得轻而易举。无论是提升工作效率,还是开发新的应用程序,了解如何使用API接口都是一项宝贵的技能。本文将为您详细介绍API接口的使用方法,无论您是初学者还是有经验的开发者,都能从中获益。一、......
  • 福建联通吉比特H80g进telnet获取超级密码改桥接
    本人博客原文链接:福建联通吉比特H80g进telnet获取超级密码改桥接最近福建联通宽带换了一个光猫,型号是吉比特H80G,自己尝试了获取管理员密码,大致流程是:1、记录自己的loid、宽带帐号、密码等配置信息;2、长按光猫reset键回复出场设置,此时管理员账户和密码是CUAdminCUAdmin,在高级......
  • 设计模式——观察者模式
    哈喽,各位盆友们!我是你们亲爱的学徒小z,今天给大家分享的文章是设计模式的——观察者模式。定义定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。通用类图1.具体结构Subject被观察者定义被观察者必须实现的职......
  • 设计模式——门面模式 | 外观模式
    哈喽,各位盆友们!我是你们亲爱的学徒小z,今天给大家分享的文章是设计模式的——门面模式。文章目录定义通用类图1.通用结构2.优点3.缺点使用场景注意事项1.一个子系统可以有多个门面2.门面不参与子系统内的业务逻辑定义定义:要求一个子系统的外部与其内部的通信必须......
  • 20天吃掉那只PyTorch:深入浅出的PyTorch入门教程
    eat_pytorch_in_20_days《20天吃掉那只PyTorch》是一本面向PyTorch初学者的开源教程,旨在帮助读者在20天内快速掌握PyTorch的核心概念和使用方法。本教程的主要特点包括:面向有一定机器学习和深度学习基础的读者,假定读者使用过Keras、TensorFlow或PyTorch搭建过简单模型。采用......
  • HourlyEmployee 和SalariedEmployee 设计模式实现
    1.1IntroductionNote:Thisassignmentisabitdifferentfromtheprevioushomework,andasksyoutopracticewithJUnit5.Ensureyoureadtheinstructionscarefullyandsubmitwhatisrequired.Volunteerworkisadmirable,butmanypeopleenjoybeingpaid......
  • 理解网络拓扑、虚拟机NAT、桥接
    理解网络拓扑、虚拟机NAT、桥接一、以校园网为例,物理机连接后进行ping操作首先于物理机本身的WLAN设置中查看当前连接的WiFi属性,获取本机获取到的IP地址使用win+R打开命令行,使用ping操作ps:校园网已有加密处理二、以同学的手机热点为例,物理机连接后进行ping操作操作同上......
  • Python 享元模式:高效利用内存的设计模式
    在Python编程中,随着程序规模的增大和数据量的增加,内存管理变得至关重要。享元模式(FlyweightPattern)作为一种结构型设计模式,为我们提供了一种在某些场景下有效管理内存、提高系统性能的方法。本文将深入探讨Python中的享元模式,包括其概念、关键要点、实现方式、应用场景......
  • Python 外观模式:简化复杂系统交互的设计模式
    在软件开发过程中,随着系统规模的不断扩大和功能的日益复杂,子系统之间的交互可能变得错综复杂。Python中的外观模式(FacadePattern)提供了一种有效的解决方案,它能够简化这些复杂的交互,为客户端提供一个统一、易用的接口来访问系统。本文将深入探讨Python中的外观模式,详细阐......