桥接模式(Bridge Pattern)

这篇具有很好参考价值的文章主要介绍了桥接模式(Bridge Pattern)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

桥接模式(Bridge Pattern)是一种结构型设计模式,用于将抽象部分与其实现部分分离,使它们可以独立地变化。桥接模式通过组合而不是继承来实现这种分离。

桥接模式的主要思想是将抽象和实现分离,让它们可以独立地变化。抽象部分包含高层逻辑,而实现部分包含底层实现细节。通过桥接模式,抽象部分和实现部分可以独立地扩展,而不会相互影响。

桥接模式由以下几个关键角色组成:

  1. 抽象部分(Abstraction):定义高层逻辑的接口,并维护对实现部分的引用。
  2. 扩展抽象部分(Refined Abstraction):对抽象部分进行扩展,通常表示更具体的业务逻辑。
  3. 实现部分(Implementor):定义实现部分的接口,提供基本操作的具体实现。
  4. 具体实现部分(Concrete Implementor):实现实现部分的具体类。

以下是一个使用C++实现的桥接模式示例,假设我们有一个图形类和一个颜色类,需要将它们的实现解耦:

#include <iostream>
#include <string>

// 实现部分(颜色类)
class Color {
public:
    virtual std::string getColor() = 0;
};

// 具体实现部分(具体颜色类)
class RedColor : public Color {
public:
    std::string getColor() override {
        return "Red";
    }
};

class BlueColor : public Color {
public:
    std::string getColor() override {
        return "Blue";
    }
};

// 抽象部分(图形类)
class Shape {
protected:
    Color* color; // 对实现部分的引用

public:
    Shape(Color* color) : color(color) {}

    virtual void draw() = 0;
};

// 扩展抽象部分(具体图形类)
class Circle : public Shape {
public:
    Circle(Color* color) : Shape(color) {}

    void draw() override {
        std::cout << "Drawing a circle in " << color->getColor() << std::endl;
    }
};

class Square : public Shape {
public:
    Square(Color* color) : Shape(color) {}

    void draw() override {
        std::cout << "Drawing a square in " << color->getColor() << std::endl;
    }
};

int main() {
    Color* redColor = new RedColor();
    Color* blueColor = new BlueColor();

    Shape* redCircle = new Circle(redColor);
    Shape* blueSquare = new Square(blueColor);

    redCircle->draw();   // 输出: Drawing a circle in Red
    blueSquare->draw();  // 输出: Drawing a square in Blue

    delete redColor;
    delete blueColor;
    delete redCircle;
    delete blueSquare;

    return 0;
}

在上述示例中,我们有一个实现部分,即颜色类(Color)和它的具体实现类(RedColorBlueColor)。然后我们有一个抽象部分,即图形类(Shape)和它的扩展类(CircleSquare)。

图形类包含对实现部分的引用(颜色),并定义了绘制图形的方法。具体的图形类扩展了图形类,并实现了绘制方法。

通过桥接模式,我们可以独立地扩展图形类和颜色类,它们可以独立变化而不相互影响。在示例中,我们创建了一个红色的圆和一个蓝色的正方形,并调用它们的绘制方法,分别输出对应的颜色和图形信息。

桥接模式可以提高系统的灵活性和可扩展性,使得抽象部分和实现部分能够独立演化。它适用于需要多个维度变化的场景,例如图形和颜色之间的关系,可以灵活地添加新的图形或颜色而不需要修改现有代码。文章来源地址https://www.toymoban.com/news/detail-551378.html

到了这里,关于桥接模式(Bridge Pattern)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++设计模式-桥接(Bridge)

    目录 C++设计模式-桥接(Bridge) 一、意图 二、适用性 三、结构 四、参与者 五、代码 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 你不希望在抽象和它的实现部分之间有一个固定的绑定关系。例如这种情况可能是因为,在程序运行时刻实现部分应可以被选择

    2024年02月07日
    浏览(42)
  • 《golang设计模式》第二部分·结构型模式-02-桥接模式(Bridge)

    桥(Bridge)使用组合关系将代码的实现层和抽象层分离,让实现层与抽象层代码可以分别自由变化。 例如 客户端调用桥接接口实现原有功能和扩展功能的组合 Implementor(实施者): 具体实施者的抽象,可以是一个接口。 Concrete Implementor(具体实施者): 可以理解为扩展之前

    2024年02月12日
    浏览(41)
  • 软件设计模式系列之九——桥接模式

    桥接模式是一种结构型设计模式,它用于将抽象部分与其实现部分分离,以便它们可以独立地变化。这种模式涉及一个接口,它充当一个桥,使得具体类可以在不影响客户端代码的情况下改变。桥接模式将继承关系转化为组合关系,从而减少类之间的紧密耦合度,使得系统更

    2024年02月08日
    浏览(38)
  • 《设计模式的艺术》笔记 - 桥接模式

            桥接模式将抽象部分与其实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体模式或接口模式 myclass.h myclass.cpp main.cpp         1. 分离抽象接口及其实现部分。桥接模式使用“对象间的关联关系”解耦了抽象和实现之间固有的绑定关系,

    2024年01月18日
    浏览(56)
  • 命令模式 Command Pattern 《游戏设计模式》学习笔记

    对于一般的按键输入,我们通常这么做,直接if按了什么键,就执行相应的操作 在这里我们是将用户的输入和程序行为硬编码在一起,这是我们很自然就想到的最快的做法。 但是如果这是一个大型游戏,往往我们需要实现一个按键配置的功能(话说2077直到上线都没有实现这

    2024年02月14日
    浏览(41)
  • 12-桥接模式(Bridge)

    将抽象部分与它的实现部分分离,使他们可以独立地变化 一句话概括就是只要是在抽象类中聚合了某个接口或者抽象类,就是使用了桥接模式。 抽象类A中聚合了抽象类B(或者接口B),A的子类的方法中在相同的场景下调用了B的子类的方法。 该小节摘抄于GOF的《设计模式》

    2024年01月19日
    浏览(40)
  • Kotlin~Bridge桥接模式

    概念 抽象和现实之间搭建桥梁,分离实现和抽象。 抽象(What) 实现(How) 用户可见 系统正常工作的底层代码 产品 付款方式 定义数据类型的类。 处理数据存储和检索的类 角色介绍 Abstraction:抽象 定义抽象接口,通常包含对实现接口的引用。 Refined Abstraction:扩展抽象,

    2024年02月12日
    浏览(34)
  • 【软件架构】流水线设计模式

    流水线模式 流水线 模式是一种软件设计模式,它提供了构建 和执行 一系列 操作的能力。 此模式最好与 插件 模式结合使用,以便在应用程序启动时 动态 构建流水线。 顺序 流水线的最基本实现是一个简单的操作序列。 可以调用 操作 的接口来 处理 数据。 流水线一个一个

    2024年02月10日
    浏览(45)
  • 架构师日记-深入理解软件设计模式

    作者:京东零售 刘慧卿 设计模式(Design pattern) :由软件开发人员在软件开发中面临常见问题的解决方案,是经过长时间的试验积累总结出来的,它使设计更加灵活和优雅,复用性更好。从实用的角度来看,它代表了某一类问题的最佳实践。 设计模式到底解决了开发过程中

    2024年02月02日
    浏览(45)
  • 设计模式之Bridge模式的C++实现

    目录 1、Bridge模式的提出 2、Bridge模式的定义 3、Bridge模式总结 4、需求描述 5、多继承方式实现 6、使用Bridge设计模式实现         在软件功能模块设计中,如果类的实现功能划分不清晰,使得继承得到的子类往往是随着需求的变化,子类急剧膨胀,充斥重复代码。将类要实现

    2024年02月13日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包