设计模式笔记之---桥接模式

桥接模式(Bridge):将抽象部分与它的实现分离,使它们都能够独立的变化。

桥梁模式的设计思想是在软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以相对独立地变化,以减少耦合。

UML类图:

                   

模式说明:

Abstraction
       抽象类,定义了一套使用和操作接口。内部维护了一个Implementor类对象,具体操作由Implementor类实现。
Implementor
       实现类,定义了基本操作,由它的派生类去实现这些接口。
ConcreteImplementor
       具体实现类,用以实现具体的操作。 基本代码:

基本代码

/********************************************************************
filename: 	Bridge.h
created:	2013-01-25
author:		firehood

purpose:	firehood 学设计模式之---桥接模式
*********************************************************************/
#pragma once
#include <iostream>
using namespace std;

// 实现者
class Implementor
{
public:
	Implementor(void){}
	virtual ~Implementor(void){}
public:
	virtual void operationImp() = 0;
};

// 抽象类
class Abstraction
{
public:
	Abstraction(Implementor* pImp):m_pImp(pImp){}
	virtual ~Abstraction(void){}
public:
	virtual void operation()
	{
		m_pImp->operationImp();
	}
protected:
	Implementor* m_pImp;
};

// 具体实现者A
class ConcreteImplementorA : public Implementor
{
public:
	ConcreteImplementorA(void){}
	virtual ~ConcreteImplementorA(void){}
public:
	void operationImp()
	{
		cout<<"执行方法A"<<endl;
	}
};

// 具体实现者B
class ConcreteImplementorB : public Implementor
{
public:
	ConcreteImplementorB(void){}
	virtual ~ConcreteImplementorB(void){}
public:
	void operationImp()
	{
		cout<<"执行方法B"<<endl;
	}
};

客户端调用代码

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

int main(int argc,char* argv[]) 
{
	cout<<"*************************************"<<endl;
	cout<<"firehood 学设计模式之---桥接模式"<<endl;
	cout<<"*************************************"<<endl;
    
    ConcreteImplementorA impA;

	Abstraction abs(&impA);

	abs.operation();

    system("pause");
	return 0;
}

执行结果:

*************************************
firehood 学设计模式之---桥接模式
*************************************
执行方法A
请按任意键继续. . .

猜你喜欢

转载自blog.csdn.net/feihu521a/article/details/8542089