桥模式

作者: Albert_d37d | 来源:发表于2021-04-26 10:03 被阅读0次


个人理解:桥模式以装饰器模式为基础,提供了一种多对多的解决问题的抽象模式。

列举个网上常见的案例:几种画笔画用不同的颜色画画。

这里的多对多即为 多种画笔 对 多种颜色。

一般的思路为,创建一个画笔,实现多种颜色。如下:

1号笔

class CPen1

{    

public:

    void DrawRed(){}

    void DrawGreen(){}

........

}

2号笔

class CPen2

{    

public:

void DrawRed(){}

void DrawGreen(){}

........

}

如果以后要再加个颜色,那么每种笔类里都要再加代码。或者再加一只笔,那么又要去重新实现所有的颜色,重复代码较多,不方便维护。为高度耦合的状态。

所以我们将颜色和笔分成两部分以组成一个桥一样的结构。如

class PenBase

{

protected:

ColorImp *pColorImp;  //抽出的颜色部分

public:

virtual void Draw() = 0;  //抽出的画笔部分

.....

.....

};

实现颜色基类

class ColorImp

{

public:

virtual void Draw() = 0;

};

添加一个颜色

class Red : public ColorImp

{

public:

virtual void Draw()

{

cout << "draw red" << endl;

}

};

添加一支笔

class Pen1 : public PenBase

{

public:

Pen1(ColorImp *p)

{

pColorImp = p;

}

virtual void Draw()

{

pColorImp->Draw();

}

};

方便调用,组装成使用类

class Paint

{

protected:

PenBase *penBase;

public:

Paint(PenBase *p)

{

penBase = p;

}

void Draw()

{

penBase->Draw();

}

};

//用pen1画一个红色

int main()

{

ColorImp *pColor = new Red();

Paint paint(new Pen1(pColor));

paint.Draw();

return 0;

}

//我们后期要再加一个颜色的话。

class Green : public ColorImp

{

public:

virtual void Draw()

{

cout << "draw green" << endl;

}

};

//用pen1画一个新的颜色

int main()

{

ColorImp *pColor = new Green();  //直接改变颜色即可

Paint paint(new Pen1(pColor));

paint.Draw();

return 0;

}

//要加一个画笔

class Pen2 : public PenBase

{

public:

Pen1(ColorImp *p)

{

pColorImp = p;

}

virtual void Draw()

{

pColorImp->Draw();

}

};

//新画笔画一个颜色

int main()

{

ColorImp *pColor = new Red();

Paint paint(new Pen2(pColor));

paint.Draw();

return 0;

}

可以看到,这时候已经做到了两个方向上的分离,实现了解耦。

相关文章

  • 设计模式-桥接模式

    设计模式-桥接模式 定义 桥接模式(Bridge Pattern)也称为桥梁模式、接口(Interface)模式或...

  • 设计模式之桥接模式

    设计模式之桥接模式 1. 模式定义 桥接模式又称柄体模式或接口模式,它是一种结构性模式。桥接模式将抽象部分与实现部...

  • 结构型模式:桥接模式

    文章首发:结构型模式:桥接模式 七大结构型模式之二:桥接模式。 简介 姓名 :桥接模式 英文名 :Bridge P...

  • 设计模式-桥接模式

    桥接模式介绍 桥接模式(Bridge Pattern)也称为桥梁模式,是结构型设计模式之一。顾名思义其与现实中的桥...

  • 桥接模式

    个人博客http://www.milovetingting.cn 桥接模式 模式介绍 桥接模式也称为桥梁模式,是结...

  • 06-01-001 虚拟机的网络连接方式(转运整理)

    一、Bridged(桥接模式) 什么是桥接模式?桥接模式就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信。在桥...

  • 设计模式——桥接模式

    设计模式——桥接模式 最近公司组件分享设计模式,然而分配给我的是桥接模式。就在这里记录我对桥接模式的理解吧。 定义...

  • Java设计模式——桥接模式

    Java设计模式之桥接模式 回顾 上一期分享了适配器模式,主要为了实现解耦 桥接模式 简介 桥接模式是对象的结构模...

  • 桥接模式

    设计模式:桥接模式(Bridge)

  • 桥模式

    属于单一职责性设计模式,主要是将类多个方向的变化拆分成多个类独立方向的变化,使其职责保持单一。 所以桥梁模式的用意...

网友评论

      本文标题:桥模式

      本文链接:https://www.haomeiwen.com/subject/sxmsrltx.html