代码实现:
#include <iostream>
using namespace std;
class Car
{
public:
virtual void show() = 0;
};
class RunCar :public Car
{
public:
void show()
{
cout << "run" << endl;
}
};
class SwimCarDirector :public Car
{
public:
SwimCarDirector(Car * car)
{
this->car = car;
}
void show()
{
car->show();
swim();
}
void swim()
{
cout << "swim" << endl;
private :}
Car* car;
};
class FlyCarDirector :public Car
{
public:
FlyCarDirector(Car * car)
{
this->car = car;
}
void show()
{
car->show();
fly();
}
void fly()
{
cout << "fly" << endl;
}
private:
Car* car;
};
void main()
{
Car* runCar = new RunCar;
runCar->show();
Car* swimCar = new SwimCarDirector(runCar);
swimCar->show();
Car* flyCar = new FlyCarDirector(swimCar);
flyCar->show();
}