使用C++实现工厂模式
2016-03-16 14:03
281 查看
#ifndef _IMODULE_ #define _IMODULE_ #include "stdafx.h" class iModule { public: int index; iModule(){}; ~iModule(){}; virtual void initialize(int idx){}; virtual bool isConnected(); protected: virtual bool programId(){ return true;} }; #endif
iModule.h
#include "stdafx.h" #include "iModule.h" using namespace std; bool iModule::isConnected() { cout << "Module" << index <<"is connected"<<endl; return true; }
iModule.cpp
#ifndef _IDETECTORMGR_ #define _IDETECTORMGR_ #include "stdafx.h" #include "iModule.h" class iDetectorMgr { public: static const int arraySize = 64; int moduleNum; iModule* moduleArray[arraySize]; iDetectorMgr(); ~iDetectorMgr(); virtual void create(){}; virtual void initialize(); virtual void deleteAll(){}; }; #endif
iDetectorMgr.h
#include "stdafx.h" #include "iDetectorMgr.h" iDetectorMgr::iDetectorMgr() { moduleNum = 0; } iDetectorMgr::~iDetectorMgr() { } void iDetectorMgr::initialize() { int i=0; for(i = 0; i < moduleNum; i++) { moduleArray[i]->initialize(i); } return ; }
iDetectorMgr.cpp
#ifndef _MODULESV_ #define _MODULESV_ #include "stdafx.h" #include "iModule.h" class moduleSV:public iModule { public: void initialize(int idx); protected: bool programId(); }; #endif
moduleSV.h
#include "stdafx.h" #include "moduleSV.h" void moduleSV::initialize(int idx) { index = idx; programId(); } bool moduleSV::programId() { cout << "program ID SV" << index<<endl; return true; }
moduleSV.cpp
#ifndef _DETECTORSV_ #define _DETECTORSV_ #include "stdafx.h" #include "iDetectorMgr.h" class detectorSV:public iDetectorMgr { public: static const int moduleSvNum = 6; detectorSV(); ~detectorSV(); virtual void create(); virtual void deleteAll(); }; #endif
detectorSV.h
#include "stdafx.h" #include "detectorSV.h" #include "moduleSV.h" detectorSV::detectorSV() { create(); } detectorSV::~detectorSV() { deleteAll(); } void detectorSV::create() { iModule *p; for(int i = 0;i < moduleSvNum; i++) { p = static_cast<iModule*>(new moduleSV()); moduleArray[i] = p; } moduleNum = moduleSvNum; } void detectorSV::deleteAll() { for(int i = 0;i < moduleSvNum; i++) { delete moduleArray[i]; moduleNum = 0; } }
detectorSV.cpp
// model.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "detectorSV.h" int _tmain(int argc, _TCHAR* argv[]) { detectorSV detSVMgr; detSVMgr.initialize(); return 0; }
相关文章推荐
- iOS OC语言: Block底层实现原理
- java的引用和c++的指针有什么区别
- C语言ASM汇编内嵌语法【转】
- C++标准库之stack(各函数及其使用全)
- C++的深拷贝与浅拷贝
- C、C++等语言常见符号作用总结
- 公司技术管理角度看C++游戏程序员发展
- C语言#自动生成四则运算的编程
- 通过模板的特化实现 简单的类型萃取 实现memcppy时候对于特殊类型如string类的拷贝。
- java与c++程序在编译和运行上有什么区别
- 【C++】《C++标准程序库》小结第六章(容器)
- C语言学习笔记
- 线程池原理及创建(C++实现)
- C++标准库之vector(各函数及其使用全)
- 重新学习《C++Primer5》第15章-面向对象程序设计
- 你好,C++(12)怎样管理多个类型同样性质同样的数据?3.6 数组
- C语言之动态分配内存
- C/C++ debug(三)
- C++ 的引用
- 十六进制转换为浮点数