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
- C++设计模式 -> 创建型 -> 工厂方式(FactoryMethod)
- 设计模式(二)工厂方法模式(FactoryMethod)-创建型
- 设计模式--创建型-FactoryMethod(工厂方法)
- java设计模式之创建型模式-FactoryMethod ( 工厂方法 )
- 创建型设计模式之工厂方法模式FactoryMethod
- 设计模式-创建型模式#工厂方法FactoryMethod
- 设计模式-创建型模式:工厂方法FactoryMethod
- 设计模式的实现(C++)------工厂方法模式(FactoryMethod)
- 设计模式(一):工厂模式FactoryMethod(创建型模式)
- 面向对象设计模式之FactoryMethod工厂方法模式(创建型)
- 创建型模式之工厂方法模式(FactoryMethod)
- 创建型 工厂模式(FactoryMethod)的入门认识
- 创建型模式-FactoryMethod ( 工厂方法 )
- 设计模式(二) 工厂方法(FactoryMethod)
- 工厂模式(FactoryMethod)
- 设计模式--工厂方法(FactoryMethod)
- 设计模式工厂方法(FactoryMethod)
- 工厂方法模式(FactoryMethod)——创建型模式
- 安卓学习中遇到的问题及经验小记
- Git版本控制详解
- KNN的C++实现
- RecyclerView中放入EditText出现的问题
- maven利用nc瑞士军刀自动上传打包文件
- C++设计模式 -> 创建型 -> 工厂方式(FactoryMethod)
- 值传递与引用传递
- Kibana汉化
- 移动端开发点击按钮后出现闪烁的结局方法
- jquery系列教程3-DOM操作全解
- Qt 2D绘图
- lintcode--主元素
- php判断身份证是否合乎规定
- hibernate初学2之核心接口