c++设计模式之桥接模式(拼接组合)

embedded/2024/9/24 7:46:40/

桥接模式:就是进行拼接组装
在这里插入图片描述
应用举例:
1.定义了形状,抽象形状接口,圆,矩形
2.定义了颜色,抽象颜色接口,红色,蓝色
3,怎么桥接,抽象具体形状和具体颜色的组合,蓝色矩形,红色圆

1.形状

#include <iostream>
#include <string>// 抽象部分:形状接口
class Shape {
public:virtual void draw() = 0; // 纯虚函数,需要子类实现
};// 具体实现:圆形
class Circle : public Shape {
public:void draw() override {std::cout << "Drawing Circle" << std::endl;}
};// 具体实现:矩形
class Rectangle : public Shape {
public:void draw() override {std::cout << "Drawing Rectangle" << std::endl;}
};

2.颜色

// 抽象部分:颜色接口
class Color {
public:virtual void fill() = 0; // 纯虚函数,需要子类实现
};// 具体实现:红色
class Red : public Color {
public:void fill() override {std::cout << "Filling with Red color" << std::endl;}
};// 具体实现:蓝色
class Blue : public Color {
public:void fill() override {std::cout << "Filling with Blue color" << std::endl;}
};

3.桥接部分

// 桥接部分:具体形状和具体颜色的组合
class BridgeShape {
protected:Shape* shape;Color* color;public:BridgeShape(Shape* shape, Color* color) : shape(shape), color(color) {}void drawAndFill() {shape->draw();color->fill();}
};// 具体桥接实现:红色圆形
class RedCircle : public BridgeShape {
public:RedCircle() : BridgeShape(new Circle(), new Red()) {}
};// 具体桥接实现:蓝色矩形
class BlueRectangle : public BridgeShape {
public:BlueRectangle() : BridgeShape(new Rectangle(), new Blue()) {}
};

运行一下

int main() {RedCircle redCircle;BlueRectangle blueRectangle;redCircle.drawAndFill();blueRectangle.drawAndFill();return 0;
}

http://www.ppmy.cn/embedded/12130.html

相关文章

Jammy@Jetson Orin - Tensorflow Keras Get Started: 000 setup for tutorial

JammyJetson Orin - Tensorflow & Keras Get Started: 000 setup for tutorial 1. 源由2. 搭建环境2.1 安装IDE环境2.2 安装numpy2.3 安装keras2.4 安装JAX2.5 安装tensorflow2.6 安装PyTorch2.7 安装nbdiff 3. 测试DEMO3.1 numpy版本兼容问题3.2 karas API - model.compil…

在docker容器中编译 rk3588 ubuntu固件

文件准备 Linux SDK ---- rk3588_linux_release_20230114_v1.0.6c_0*Ubuntu根文件系统 ---- Ubuntu22.04-Xfce_RK3588_v3.11-27_20240410.img.7z 硬件环境 一个可联网的linux机器&#xff0c;并且装有docker 打包一个docker编译环境 Dockerfile内容 直接通过dockerfile构…

OpenHarmony开源鸿蒙NEXT星河版内核嵌入式编程

一、前景提要 2024年1月18日&#xff0c;华为放出HarmonyOS NEXT 鸿蒙星河版开发者预览版本&#xff08;不是HarmonyOS NEXT版&#xff0c;是HarmonyOS NEXT星河版&#xff09;&#xff0c;首次提到用鸿蒙内核&#xff08;暂命名&#xff09;取代了Linux内核。 该内核源码还未放…

项目实践---贪吃蛇小游戏(下)

对于贪吃蛇小游戏&#xff0c;最主要的还是主函数部分&#xff0c;这里就和大家一一列举出来&#xff0c;上一章已经写过头文件了&#xff0c;这里就不多介绍了。 首先就是打印桌面&#xff0c;也就是背景&#xff0c;则对应的代码为&#xff1a; void SetPos(short x, short …

构建NodeJS库--前端项目的打包发布

1. 前言 学习如何打包发布前端项目&#xff0c;需要学习以下相关知识&#xff1a; package.json 如何初始化配置&#xff0c;以及学习npm配置项&#xff1b; 模块类型type配置&#xff0c; 这是nodejs的package.json的配置main 入口文件的配置 webpack 是一个用于现代 JavaSc…

电子信息制造工厂5G智能制造数字孪生可视化平台,推进数字化转型

电子信息制造工厂5G智能制造数字孪生可视化平台&#xff0c;推进数字化转型。5G智能制造数字孪生可视化平台利用5G网络的高速、低延迟特性&#xff0c;结合数字孪生技术和可视化界面&#xff0c;为电子信息制造工厂提供了一种全新的生产管理模式。不仅提升生产效率&#xff0c;…

程序猿成长之路之数据挖掘篇——朴素贝叶斯

朴素贝叶斯是数据挖掘分类的基础&#xff0c;本篇文章将介绍一下朴素贝叶斯算法 情景再现 以挑选西瓜为例&#xff0c;西瓜的色泽、瓜蒂、敲响声音、触感、脐部等特征都会影响到西瓜的好坏。那么我们怎么样可以挑选出一个好的西瓜呢&#xff1f; 分析过程 既然挑选西瓜有多个…

酷开科技逐步为用户构建健全的智慧家庭生活场景

大规模与精细化人群技术则是通过大量的计算能力和精细化的运营能力&#xff0c;建立用户专属数据储存区域&#xff0c;使得用户在使用不同电视的观影偏好和兴趣能够能够得以延续。 不拘泥于自有品牌终端数量&#xff0c;酷开系统除了集成在创维电视上&#xff0c;还服务于飞利…