C++设计模式之桥接模式(Bridge)

#include "StdAfx.h"
#include 
#include
#include
#include
#include 
using namespace std;
 
class BaseRoad
{
public:
    virtual void Run()=0;
protected:
private:
};
class BaseCar
{
public:
    BaseRoad* m_pRoad;
    virtual void Run()=0;
protected:
private:
};
class SpeedRoad:public BaseRoad
{
public:
    virtual void Run()
    {
        printf("在高速公路上跑...\n");
    }
protected:
private:
};
class StreetRoad:public BaseRoad
{
public:
    virtual void Run()
    {
        printf("在街道上跑....\n");
    }
protected:
private:
};
class Car:public BaseCar
{
public:
    virtual void Run()
    {
        printf("小车在");
        m_pRoad->Run();
    }
protected:
private:
};
class Bus:public BaseCar
{
public:
    virtual void Run()
    {
        printf("巴士在");
        m_pRoad->Run();//桥接到下一层
    }
protected:
private:
};
class BasePeople
{
public:
    BaseCar* m_pCar;
    virtual void Run()=0;
protected:
private:
};
class Man:public BasePeople
{
public:
    virtual void Run()
    {
        printf("男人驾驶");
        m_pCar->Run();//桥接到下一层
    }
protected:
private:
};
int main(void) 
{ 
    BaseRoad *pRoad=new SpeedRoad();
    BaseCar* pCar=new Car();
    pCar->m_pRoad=pRoad;
    //pCar->Run();
    BasePeople* pMan=new Man();
    pMan->m_pCar=pCar;
    pMan->Run();
    return 0; 
}

你可能感兴趣的:(C++)