C++设计模式 -> 创建型 -> 工厂方式(FactoryMethod)
2017-08-05 15:30
816 查看
工厂模式
头文件
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;} } #endif int 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
相关文章推荐
- 设计模式笔记-创建型模式之三--工厂方法:Factory Method
- 设计模式(一):工厂模式FactoryMethod(创建型模式)
- 23种设计模式之工厂模式(创建型,1 Factory,c++实现)
- JAVA设计模式(1) —<创建型>工厂方法模式(Factory Method)
- [设计模式-创建型]工厂方法(Factory Method)
- java设计模式之创建型模式-FactoryMethod ( 工厂方法 )
- 设计模式--创建型-FactoryMethod(工厂方法)
- [设计模式学习笔记二][创建型模式][工厂方法(Factory Method)]
- 设计模式(1)の创建型の工厂方法模式(Factory Method)の(普通|简单)工厂模式
- 设计模式杂谈:创建型模式之工厂方法(Factory Method)
- 设计模式-创建型模式之 Factory Method(工厂方法)
- JAVA设计模式(24):创建型-工厂模式【工厂方法模式】(Factory Method)
- 【设计模式基础】创建型模式 - 4 - 工厂方法(Factory Method)
- 【设计模式】创建型模式之工厂方法Factory Method
- 设计模式(Design Pattern) - 创建型模式(Creational Pattern) - 工厂模式(FactoryMethod) - Java实现
- [设计模式-创建型]工厂方法(Factory Method)
- c++ 设计模式8 (Factory Method 工厂方法)
- 设计模式-创建型-Factory Method(工厂方法)
- 设计模式-3.3 Factory Method(工厂方法) 对象创建型模式
- [设计模式-创建型]工厂方法(Factory Method)