设计模式之桥接模式
发布日期:2021-05-07 15:14:42 浏览次数:18 分类:原创文章

本文共 1421 字,大约阅读时间需要 4 分钟。

目录


桥接模式bridge

概念

  • Bridge 模式又叫做桥接模式,是构造型的设计模式之一。
  • Bridge模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任。
  • 它的主要特点是把抽象(abstraction)与行为实现(implementation)分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。

角色和职责

  • Client
    • Bridge模式的使用者
  • Abstraction
    • 抽象类接口(接口或抽象类)维护对行为实现(Implementor)的引用
  • Refined Abstraction
    • Abstraction子类
  • Implementor
    • 行为实现类接口 (Abstraction接口定义了基于Implementor接口的更高层次的操作)
  • ConcreteImplementor
    • Implementor子类
       
  • 适用于:
    • 桥接模式(Bridge Pattern)是将抽象部分与实现部分分离(解耦合),使它们都可以独立的变化
      • 车 安装 发动机 ;不同型号的车,安装不同型号的发动机
      • 图形 填 颜色    不同形状的图形,填充上 不同的颜色
    • 将“车 安装 发动机”这个抽象 和 实现进行分离;两个名字 就设计两个类;
    • 将“图形 填 颜色”这个抽象 和 实现 进行分离,两个名字,就设计两个类

案例

//需要把“安装发动机”这个事,做很好的分解;把抽象 和 行为实现 分开//发动机是一个名次,专门抽象成一个类;类中含有一个成员函数,安装发动机class Engine{public:	virtual void installEngine() = 0;};class Engine4000 : public Engine{public:	virtual void installEngine()	{		cout << "安装发动机 Engine4000" << endl;	}};class Engine3500 : public Engine{public:	virtual void installEngine()	{		cout << "安装发动机 Engine 3500" << endl;	}};class Car{public:	Car(Engine *pengine)	{		m_engine = pengine;	}	virtual void installEngine() = 0;protected:	Engine *m_engine;};class BMW7 :public Car{public:	BMW7(Engine *p) : Car(p)	{	}	//注意车的安装  和 发动机的安装 不同之处	virtual void installEngine()	{		cout << "BMW7 " ; 		m_engine->installEngine();	}protected:private:};void main163(){	Engine4000 *e4000 = new Engine4000;	BMW7 *bmw7 = new BMW7(e4000);	bmw7->installEngine();	delete bmw7;	delete e4000;}void main(){	main163();	system("pause");}

【注】参考传智扫地僧C++设计模式

上一篇:设计模式之组合模式
下一篇:设计模式之适配器模式

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2025年04月11日 05时09分39秒