在CnComm多线程串口通讯类的封装实现一文中实现了对于cncomm多线程串口类的简单封装,新版本将串口管理类改成了工厂类和单例类,实现了对于动态扩展新的串口,新的版本符合开闭原则。
1.串口管理类
#ifndef _COMM_MANAGE_H_ #define _COMM_MANAGE_H_ class CommWrapper; //抽象基类 class CommAbsFactory { public: virtual ~CommAbsFactory(); virtual CommWrapper* createCommWrapperInstance()=0; protected: CommAbsFactory(); }; //串口管理工厂具体类 class CommModuleFactory:public CommAbsFactory { public: static CommModuleFactory* Instance(); virtual ~CommModuleFactory(); CommWrapper* createCommWrapperInstance(); protected: CommModuleFactory(); CommModuleFactory(const CommModuleFactory&); CommModuleFactory& operator= (const CommModuleFactory&); private: static CommModuleFactory* _commMangeinstance; }; #endif
#include "stdafx.h" #include "commWrapper.h" #include "CommManage.h" CommAbsFactory::CommAbsFactory() { } CommAbsFactory::~CommAbsFactory() { } CommModuleFactory* CommModuleFactory::_commMangeinstance = 0; CommModuleFactory::CommModuleFactory() { } CommModuleFactory::~CommModuleFactory() { } CommModuleFactory* CommModuleFactory::Instance() { if(_commMangeinstance == 0) { _commMangeinstance = new CommModuleFactory(); } return _commMangeinstance; } CommWrapper* CommModuleFactory::createCommWrapperInstance() { return new CommWrapper(); }
原文:http://blog.csdn.net/figo829/article/details/19709111