桥接模式(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
请按任意键继续. . .
firehood 学设计模式之---桥接模式
*************************************
执行方法A
请按任意键继续. . .
作者:feihu521a 发表于2013-1-25 17:26:37 原文链接
阅读:13 评论:0 查看评论