桥接模式(Bridge Pattern)

170 阅读1分钟

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

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

#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);  //负责抽象接口,具体的工作交由imp对象
	obj->Operation();

    return 0;
}

关注微信公众号,好好学习,天天向上!