您的位置:首页 > 编程语言 > C语言/C++

C++设计模式——Bridge模式

2017-07-11 21:33 369 查看

关于Bridge模式

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

往下讲之前插上以下这段话。总结面向对象实际上就两句话:一是松耦合,二是高内聚。面向对象系统追求的目标就是尽可能地提高系统模块内部的内聚、尽可能降低模块间的耦合。然而这也是面向对象设计过程中最难把握的部分。

Bridge模式,将系统分为两个相对独立的部分,一个是抽象部分,一个是实现部分。Bridge模式是将抽象和实现分别独立实现。使用组合的方式将抽象和实现彻底解耦,这样的好处是抽象和实现可以分别独立地变化,系统的耦合性也得到了很好的降低。

代码示例

// BridgePattern.cpp

#include "stdafx.h"
#include<iostream>
using namespace std;

//实现
class AbstractionImp
{
public:
virtual ~AbstractionImp(){}
virtual void Operation() = 0;
protected:
AbstractionImp(){}
};

//不同的实现方法A
class AbstractionImpA :public AbstractionImp
{
public:
~AbstractionImpA(){}
AbstractionImpA(){}
void Operation()
{
cout << "AbstractionImpA Operation()!\n";
}
};

//不同的实现方法B
class AbstractionImpB :public AbstractionImp
{
public:
~AbstractionImpB() {}
AbstractionImpB() {}
void Operation()
{
cout << "AbstractionImpB Operation()!\n";
}
};

//抽象
class Abstraction
{
public:
virtual ~Abstraction(){}
virtual void Operation() = 0;
protected:
Abstraction(){}
};

//提炼抽象,将抽象与实现桥接起来
class RefinedAbstraction:public Abstraction
{
public:
RefinedAbstraction(AbstractionImp* imp):_imp(imp){}
~RefinedAbstraction(){}
virtual void Operation()
{
_imp->Operation();
}
private:
AbstractionImp* _imp;
};

int main()
{
AbstractionImp* imp = new AbstractionImpA();
Abstraction* obj = new RefinedAbstraction(imp);
obj->Operation();

system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息