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

设计模式---桥接模式(C++实现)

2017-03-13 09:53 260 查看
/**************************************************************************************

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

适用于:
桥接模式(Bridge Pattern)是将抽象部分与实现部分分离(解耦合),使它们都可以独立的变化。

实现方法:
创建一个抽象类定义接口,然后不同的子类去实现此接口

  然后定义一个使用此功能函数的类,在这个类中通过传递来的指针对象去操作它的函数

  这里的桥接桥接的都是同一个函数(所以才会叫桥接)

通过中间人搭桥(车这个中间人)

**************************************************************************************/

#include <iostream>

using namespace std;

//需要把“安装发动机”这个事,做很好的分解;把抽象 和 行为实现 分开

//发动机是一个名词语,专门抽象成一个类;类中含有一个成员函数,安装发动机

class Engine;

class Car

{

public:
Car(Engine *pengine)
{ m_engine = pengine;}
virtual void installEngine() = 0;

protected:
Engine *m_engine;

};

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 BMW7 :public Car

{

public:
BMW7(Engine *p) : Car(p)
{ }
virtual void installEngine()//注意车的安装  和 发动机的安装 不同之处
{
cout << "BMW7 ";
m_engine->installEngine();
}

protected:

private:

};

void main()

{

Engine4000 *e4000 = new Engine4000; //创建一个发动机,然后返回发动机的基类指针
BMW7 *bmw7 = new BMW7(e4000); //然后将此指针传递给,想要安装此发动机的车,基类和派生类中都初始化此发动机
bmw7->installEngine();//然后车子在调用安装发动机(在此函数中完成发动机的安装(在自己的地盘操纵别人的函数))

delete bmw7;
delete e4000;
system("pause");
}

来源:传智博客---王保明
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计模式