文章类型: VC&C++
关键词: C++纯虚类与工厂的应用,面向对象之设计模式
内容摘要: C++纯虚类与工厂的应用,面向对象之设计模式

C++纯虚类与工厂的应用

2016/8/25 14:19:27    来源:apple    阅读:

一、纯虚类

hardware/amlogic/camera/inc/CameraHal.h

class CameraAdapter : public FrameNotifier, public virtual RefBase
{
	//add by aoyu.cc
	virtual bool getPixelFormat(char* ResolutionList, bool bIsPictureMode) = 0;
	virtual int v4l2QueryControl(int control, struct v4l2_queryctrl *queryctrl) = 0;
	virtual int v4l2GetControl(int control) = 0;
	virtual int v4l2SetControl(int control, int value) = 0;
	int mInterpolationSize;
	//end aoyu.cc
}

hardware/amlogic/camera/inc/BaseCameraAdapter.h

class BaseCameraAdapter : public CameraAdapter
{
	//add by aoyu.cc
	virtual bool getPixelFormat(char* ResolutionList, bool bIsPictureMode) = 0;
	virtual int v4l2QueryControl(int control, struct v4l2_queryctrl *queryctrl) = 0;
	virtual int v4l2GetControl(int control) = 0;
	virtual int v4l2SetControl(int control, int value) = 0;
	//end aoyu.cc
}

二、继承类

hardware/amlogic/camera/inc/V4LCamAdpt.h

class V4LCamAdpt : public BaseCameraAdapter
{
	//add by aoyu.cc
	virtual bool getPixelFormat(char* ResolutionList, bool bIsPictureMode);
	virtual int v4l2QueryControl(int control, struct v4l2_queryctrl *queryctrl);
	virtual int v4l2GetControl(int control);
	virtual int v4l2SetControl(int control, int value);
	//end aoyu.cc
}

hardware/amlogic/camera/inc/V4LCameraAdapter/V4LCameraAdapter.h

class V4LCameraAdapter : public BaseCameraAdapter
{
	//add by aoyu.cc
	virtual bool getPixelFormat(char* ResolutionList, bool bIsPictureMode);
	virtual int v4l2QueryControl(int control, struct v4l2_queryctrl *queryctrl);
	virtual int v4l2GetControl(int control);
	virtual int v4l2SetControl(int control, int value);
	//end aoyu.cc
}

三、使用

1.分别是虚拟和实际

hardware/amlogic/camera/CameraHal.cpp

status_t CameraHal::initialize(CameraProperties::Properties* properties)
{
	mCameraAdapter = CameraAdapter_Factory(sensor_index);
}
hardware / amlogic / camera / vircam / VirtualCamHal.cpp

status_t VirtualCamHal::initialize(CameraProperties::Properties* properties)
{
	mCameraAdapter = CameraAdapter_Factory(sensor_index);
}

2.工厂模式的定义

hardware/amlogic/camera/V4LCameraAdapter/V4LCameraAdapter.cpp

extern "C" CameraAdapter* CameraAdapter_Factory(size_t sensor_index)
{
	if (sensor_index == (size_t)(iCamerasNum)) {
		adapter = new V4LCamAdpt(sensor_index);
	}
	else {
		adapter = new V4LCameraAdapter(sensor_index);
	}
}
↑ 上一篇文章:vc全局变量一般这样定义 关键词:vc全局变量一般这样定义 发布日期:2016/8/25 11:54:16
↓ 下一篇文章:C++ 纯虚类 关键词:C++,纯虚类 发布日期:2016/8/25 15:51:19
相关目录:.NETVC&C++软件开发
我要评论
正在加载评论信息......