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

来源:互联网 发布:手机办公文档软件 编辑:程序博客网 时间:2024/06/07 05:38
/**************************************************************************************
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");

}

来源:传智博客---王保明




0 0