代码拉取完成,页面将自动刷新
#include <QCoreApplication>
#include <QDebug>
// 通信设备接口类
class Device
{
public:
virtual void write() = 0;
virtual void read() = 0;
};
///
/// 具体的子类,网口通信类
///
class EthernetDevice : public Device
{
public:
EthernetDevice()
{
qDebug()<<"EthernetDevice construct";
}
virtual ~EthernetDevice()
{
qDebug()<<"EthernetDevice disconstruct";
}
virtual void write()
{
qDebug()<<"EthernetDevice write";
}
virtual void read()
{
qDebug()<<"EthernetDevice read";
}
};
///
/// 具体的子类,串口通信类
///
class UartDevice: public Device
{
public:
UartDevice()
{
qDebug()<<"uartDevice construct";
}
virtual ~UartDevice()
{
qDebug()<<"uartDevice disconstruct";
}
virtual void write()
{
qDebug()<<"uartDevice write";
}
virtual void read()
{
qDebug()<<"uartDevice read";
}
};
// 抽象模板工厂类
// 模板参数:AbstractDevice_t 设备抽象类
template <class AbstractDevice_t>
class AbstractFactory
{
public:
virtual AbstractDevice_t *createDevice() = 0;
virtual ~AbstractFactory() {}
};
// 具体模板工厂类
// 模板参数:AbstractDevice_t 设备抽象类,ConcreteDevice_t 设备具体类
template <class AbstractDevice_t, class ConcreteDevice_t>
class ConcreteFactory : public AbstractFactory<AbstractDevice_t>
{
public:
AbstractDevice_t *createDevice()
{
return new ConcreteDevice_t();
}
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
//ConcreteFactory<Device, EthernetDevice> factory;
ConcreteFactory<Device, UartDevice> factory;
Device* dev = factory.createDevice();
dev->write();
dev->read();
//。。。
return a.exec();
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。