合成复用原则 : 在继承和组合的情况下首先使用组合
C++代码实现:
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;
class AbstractCar {
public :
virtual void run()=0;
};
class DaZhong : public AbstractCar{
public :
virtual void run() {
cout <<"我开着大众开始上班"<<endl;
}
};
class DoFeng : public AbstractCar{
public :
virtual void run() {
cout<<"我开个东风开始上班"<<endl;
}
};
class Person {
public :
void setCar(AbstractCar* car) {
this->car = car;
}
void goWork() {
car->run();
}
private :
AbstractCar* car;
};
void test() {
AbstractCar* car = new DaZhong();
Person p;
p.setCar(car);
p.goWork();
}
int main() {
test();
return 0;
}