C++设计模式 -> 创建型 -> 工厂方式(FactoryMethod)

来源:互联网 发布:孕妇大肚照软件 编辑:程序博客网 时间:2024/06/06 05:26

工厂模式

这里写图片描述

头文件


base_product.h

#ifndef PRODUCT_H#define PRODUCT_H#include <string>using namespace std;// 汽车接口class ___Car{public:    virtual string Produce() = 0;  // 汽车名称protected:private:};#endif // PRODUCT_H

base_factory.h

#ifndef FACTORY_H#define FACTORY_H#include "base_product.h"// 工厂接口class Car_Factory{public:    virtual ___Car* Create_Car() = 0;  // 生产汽车protected:private:};#endif // FACTORY_H

inheritance_product.h

#ifndef CONCRETE_PRODUCT_H#define CONCRETE_PRODUCT_H#include "base_product.h"// 奔驰汽车class BenzCar : public ___Car{public:    string Produce()     {        return "Benz Car";    }protected:private:};// 宝马汽车class BmwCar : public ___Car{public:    string Produce()     {        return "Bmw Car";    }protected:private:};// 奥迪汽车class AudiCar : public ___Car{public:    string Produce()     {        return "Audi Car";    }protected:private:};#endif // CONCRETE_PRODUCT_H

inheritance_factory.h

#ifndef CONCRETE_FACTORY_H#define CONCRETE_FACTORY_H#include "base_factory.h"#include "inheritance_product.h"// 奔驰工厂class BenzFactory : public Car_Factory{public:    ___Car* Create_Car()    {        return new BenzCar;    }protected:private:};// 宝马工厂class BmwFactory : public Car_Factory{public:    ___Car* Create_Car()    {        return new BmwCar;    }protected:private:};// 奥迪工厂class AudiFactory : public Car_Factory{public:    ___Car* Create_Car()    {        return new AudiCar;    }protected:private:};#endif // CONCRETE_FACTORY_H

源文件


main.cpp

#include "inheritance_factory.h"#include "base_product.h"#include <iostream>#ifndef SAFE_DELETE#define SAFE_DELETE(address) { if(address){delete(address); (address)=NULL;} }#endifint main(){    Car_Factory* car_factory_address = NULL;    ___Car* car_address = NULL;    // 奔驰    car_factory_address = new BenzFactory;    car_address = car_factory_address->Create_Car();    cout << car_address->Produce() << endl;    SAFE_DELETE(car_address);    SAFE_DELETE(car_factory_address);    // 宝马    car_factory_address = new BmwFactory;    car_address = car_factory_address->Create_Car();    cout << car_address->Produce() << endl;    SAFE_DELETE(car_address);    SAFE_DELETE(car_factory_address);    // 奥迪    car_factory_address = new AudiFactory;    car_address = car_factory_address->Create_Car();    cout << car_address->Produce() << endl;    SAFE_DELETE(car_address);    SAFE_DELETE(car_factory_address);    getchar();    return 0;}

出处参考:http://blog.csdn.net/liang19890820/article/details/70652858


阅读全文
0 0
原创粉丝点击