3.工厂方法模式

来源:互联网 发布:网络加速器 编辑:程序博客网 时间:2024/06/01 10:10

代码实现:

#include<iostream>#include<string>#include<assert.h>using namespace std;class Car{public:virtual ~Car(){}virtual void PrintName() {cout << "汽车生产厂商:" << name << endl;}protected:Car(){}Car(const string &name):name(name){}private:string name;};class GMCar:public Car{public:GMCar():Car("通用汽车公司"){}void PrintName(){cout << "GMCar Test\n";Car::PrintName();}};class FordCar:public Car{public:FordCar():Car("福特汽车公司"){}void PrintName(){cout << "FordCar Test\n";Car::PrintName();}};class Factory{public:virtual Car* CreatCar() = 0;};class GMFactory:public Factory{public:Car* CreatCar(){return new GMCar();}};class FordFactory:public Factory{public:Car* CreatCar(){return new FordCar();}};int main(){Factory *pFactory = NULL;Car *pCar = NULL;GMFactory pGMFactory;FordFactory pFordFactory;pFactory = &pGMFactory;pCar = pFactory->CreatCar();pCar->PrintName();delete pCar;pFactory = &pFordFactory;pCar = pFactory->CreatCar();pCar->PrintName();delete pCar;return 0;}


0 0