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

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

目录

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

一、意图

二、适用性

三、结构

四、参与者

五、代码


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

一、意图

将抽象部分与它的实现部分分离,使它们都可以独立地变化。

二、适用性

  • 你不希望在抽象和它的实现部分之间有一个固定的绑定关系。例如这种情况可能是因为,在程序运行时刻实现部分应可以被选择或者切换。
  • 类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充。这时Bridge模式使你可以对不同的抽象接口和实现部分进行组合,并分别对它们进行扩充。
  • 对一个抽象的实现部分的修改应对客户不产生影响,即客户的代码不必重新编译。
  • (C++)你想对客户完全隐藏抽象的实现部分。在C++中,类的表示在类接口中是可见的。
  • 有许多类要生成。这样一种类层次结构说明你必须将一个对象分解成两个部分。Rumbaugh称这种类层次结构为“嵌套的普化”(nested generalizations )。
  • 你想在多个对象间共享实现(可能使用引用计数),但同时要求客户并不知道这一点。一个简单的例子便是Coplien的String类[Cop92],在这个类中多个对象可以共享同一个字符串表示(S tringRep)。

三、结构

 C++设计模式-桥接(Bridge),设计模式(C++),c++,开发语言,设计模式,桥接

四、参与者

  • Abstraction

        定义抽象类的接口。

        维护一个指向Implementor类型对象的指针。

  • RefinedAbstraction

        扩充由Abstraction定义的接口。

  • Implementor

        定义实现类的接口,该接口不一定要与Abstraction的接口完全一致;事实上这两个接口可以完全不同。一般来讲,Implementor接口仅提供基本操作,而Abstraction则定义了基本这些基本操作的较高层次的操作。

  • ConcreteImplementor

        实现了Implementor接口并定义它的具体实现。文章来源地址https://www.toymoban.com/news/detail-728368.html

五、代码

#include<iostream>
using namespace std;

class Implementor {
public:
	virtual void OperationImp() = 0;
};

class ConcreteImplementorA : public Implementor {
public:
	virtual void OperationImp() {
		cout << "Concrete Implementor A" << endl;
	}
};

class ConcreteImplementorB : public Implementor {
public:
	virtual void OperationImp() {
		cout << "Concrete Implementor B" << endl;
	}
};

class Abstraction {
public:
	virtual void Operation() = 0;
};

class RefinedAbstraction : public Abstraction {
public:
	RefinedAbstraction(Implementor* TempImplementor) {
		this->implementor = TempImplementor;
	}
	void Operation() {
		implementor->OperationImp();
	}
private:
	Implementor* implementor;
};

int main() {
	
	Implementor* implementorA = new ConcreteImplementorA;
	Abstraction* abstractionA = new RefinedAbstraction(implementorA);
	abstractionA->Operation();

	Implementor* implementorB = new ConcreteImplementorB;
	Abstraction* abstractionB = new RefinedAbstraction(implementorB);
	abstractionB->Operation();

	return 0;
}

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

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

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

相关文章

  • 设计模式之Bridge模式的C++实现

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

    2024年02月13日
    浏览(32)
  • 设计模式:桥接模式

    桥接模式(Bridge Pattern):旨在将抽象部分和实现部分解耦,使它们可以独立地变化。这种模式通过将抽象和实现分离,使它们可以独立地进行扩展和修改,而不会相互影响。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。 假如需要使用大

    2024年01月25日
    浏览(36)
  • 设计模式——桥接模式详解

    1.1⭐桥接模式的定义 维基百科: 桥接模式 是软件设计模式中最复杂的模式之一,它把事物对象和其具体行为、具体特征分离开来,使它们可以各自独立的变化。 百度百科: 桥接模式 是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,

    2024年02月06日
    浏览(34)
  • 设计模式——桥接模式

    引用 桥 我们大家都熟悉,顾名思义就是用来将河的两岸联系起来的。而此处的桥是用来将两个独立的结构联系起来,而这两个被联系起来的结构可以独立的变化,所有其他的理解只要建立在这个层面上就会比较容易。 基本介绍 桥接模式(Bridge)是指将实现与抽象放在两个不

    2024年02月12日
    浏览(36)
  • 设计模式-桥接模式

    适配器模式 类似,以后也会遇到意思接近一样的设计模式。在开发中一般多个模式混用,且根据不同的场景进行搭配,桥接模式也是 结构型模式 将抽象的部分和实现的部分分离,使它们都可以独立的变化。通俗来说,就是通过组合来 桥接 其它的 行为或维度 与适配器模式业

    2024年02月11日
    浏览(35)
  • 【设计模式】桥接模式

    桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类,这两种类型的类可被结

    2024年02月13日
    浏览(46)
  • 设计模式 07 桥接模式

    桥接模式(Bridge Pattern)属于 结构型 模式 桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为 柄体 (Handle and Body)模式或 接口 (Interface)模式。 比如需要创建电脑对象,市面上的电脑非常多, 品牌 有华为、苹果、联

    2024年02月11日
    浏览(37)
  • 设计模式之~桥接模式

    桥接模式:         将抽象部分与它的实现部分分离,使他们都可以独立地变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。         什么叫抽象与它的实现分离,这并不是说,让抽象类与其派生类分离,因

    2024年02月07日
    浏览(31)
  • 设计模式详解-桥接模式

    类型:结构型模式 实现原理:将抽象类和实现类分离,使其独立,然后使用接口再将二者连接起来。 意图:将抽象部分与实现部分分离,使它们都可以独立的变化。 主要解决:类变化频繁时用继承可能会出现的类爆炸问题。 如何解决:减少类的耦合关系,让类独立变化。

    2024年02月12日
    浏览(37)
  • js设计模式:桥接模式

    可以将复杂的类进行一些拆分,让抽象和实现进行分离解耦,可以让每一个部分都可以单独维护 方便扩展和维护

    2024年02月22日
    浏览(27)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包