工厂方法模式
代码
#include<iostream>
using namespace std;
class Transportation{
public:
virtual void operation() = 0;
};
class Truck:public Transportation{
public:
void operation(){
cout<<"通过公路运输货物"<<endl;
}
};
class Freighter:public Transportation{
void operation(){
cout<<"通过海洋运输货物"<<endl;
}
};
class Create{
public:
virtual Transportation *factoryMethod() = 0;
void SomeOperation(){
Transportation* transportation = this->factoryMethod();
transportation->operation();
delete transportation;
}
};
class TruckCreater:public Create{
public:
Transportation* factoryMethod(){
cout<<"委派一辆货车:"<<endl;
return new Truck();
}
};
class FreighterCreater:public Create{
public:
Transportation* factoryMethod(){
cout<<"委派一艘货轮:"<<endl;
return new Freighter();
}
};
void main(){
TruckCreater* truckCreater1 = new TruckCreater();
truckCreater1->SomeOperation();
FreighterCreater* freighterCreater1 = new FreighterCreater();
freighterCreater1->SomeOperation();
}
运行结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200730000432923.png)