每日博客
桥接模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解桥接模式的动机,掌握该模式的结构;
2、能够利用桥接模式解决实际问题。
[实验任务一]:两个维度的桥接模式
用桥接模式实现在路上开车这个问题,其中,车可以是car或bus,路可以是水泥路或沥青路。
#include <iostream>
using namespace std;
class AbstractCar {
public:
virtual void run () = 0;
};
class Car:public AbstractCar {
public:
void run () {
cout<<"Car";
}
};
class Bus:public AbstractCar {
public:
void run () {
cout<<"Bus";
}
};
class AbstractRoad {
public:
AbstractRoad(AbstractCar *car):car(car){}
virtual void run() = 0;
protected:
AbstractCar *car;
};
class SpeedWay: public AbstractRoad {
public:
SpeedWay(AbstractCar *car):AbstractRoad(car){}
void run() {
car->run();
cout<<" 水泥路"<<endl;
}
};
class Street: public AbstractRoad {
public:
Street(AbstractCar *car):AbstractRoad(car){}
void run() {
car->run();
cout<<" 沥青路"<<endl;
}
};
main() {
AbstractRoad *carOnSpeedway = new SpeedWay(new Car);
AbstractRoad *busOnSpeedway = new SpeedWay(new Bus);
AbstractRoad *carOnStreet = new Street(new Car);
AbstractRoad *busOnStreet = new Street(new Bus);
carOnSpeedway ->run();
busOnSpeedway ->run();
carOnStreet ->run();
busOnStreet ->run();
}