CnComm多线程串口通讯类的封装实现v0.02

 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();
}



猜你喜欢

转载自blog.csdn.net/figo829/article/details/19709111