2. 工厂模式的实现2.1. 定义产品接口
首先,我们需要定义一个产品接口,该接口将作为工厂模式的基础。例如,我们创建一个简单的传感器接口:
// Sensor.hclass Sensor {public: virtual ~Sensor() {} virtual void readData() = 0;};
2.2. 定义具体产品类
接下来,我们需要实现具体的产品类,实现产品接口中定义的方法。在这里,我们创建两个具体的传感器类,分别为温度传感器和湿度传感器:
// TemperatureSensor.h#include "Sensor.h"class TemperatureSensor : public Sensor {public: void readData() override { // 实现温度传感器的数据读取逻辑 // ... }};// HumiditySensor.h#include "Sensor.h"class HumiditySensor : public Sensor {public: void readData() override { // 实现湿度传感器的数据读取逻辑 // ... }};
2.3. 定义工厂接口
接下来,我们定义一个工厂接口,用于创建传感器对象。这样一来,我们可以在客户端代码中使用工厂接口来创建传感器对象,而不需要直接使用具体的传感器类。

// SensorFactory.h#include "Sensor.h"class SensorFactory {public: virtual ~SensorFactory() {} virtual Sensor createSensor() = 0;};
2.4. 定义具体工厂类
最后,我们实现具体的工厂类,用于创建具体的传感器对象。在这里,我们创建温度传感器工厂和湿度传感器工厂:
// TemperatureSensorFactory.h#include "SensorFactory.h"#include "TemperatureSensor.h"class TemperatureSensorFactory : public SensorFactory {public: Sensor createSensor() override { return new TemperatureSensor(); }};// HumiditySensorFactory.h#include "SensorFactory.h"#include "HumiditySensor.h"class HumiditySensorFactory : public SensorFactory {public: Sensor createSensor() override { return new HumiditySensor(); }};
3. 使用工厂模式创建传感器对象
现在我们已经完成了工厂模式的实现,接下来我们来看看如何使用工厂模式来创建传感器对象。
首先,在客户端代码中,我们只需要使用工厂接口来创建传感器对象,而不需要直接使用具体的传感器类。例如,我们可以这样创建一个温度传感器对象:
#include "SensorFactory.h"#include "TemperatureSensorFactory.h"int main() { SensorFactory temperatureFactory = new TemperatureSensorFactory(); Sensor temperatureSensor = temperatureFactory->createSensor(); // 使用温度传感器对象进行数据读取 temperatureSensor->readData(); delete temperatureSensor; delete temperatureFactory; return 0;}
同样,我们可以使用湿度传感器工厂来创建湿度传感器对象,而无需关心具体的传感器类。
4. 总结通过使用工厂模式,我们成功将对象的创建过程封装在工厂类中,实现了对象的创建和使用解耦,增强了代码的灵活性和可维护性。在嵌入式软件开发中,工厂模式是一种非常有用的设计模式,可以帮助我们更好地组织代码,简化对象的创建过程,并提高代码的可读性和可维护性。因此,在适当的场景下,我们可以考虑使用工厂模式来改进我们的嵌入式软件设计。