需要将某些命令发送到传感器。我想拥有一个代表一组传感器的传感器类。这个想法是,在实例化期间,将此传感器对象与应使用的一组命令联系起来。例如。来自不同供应商的两个温度传感器将由同一类表示,但链接到不同的命令集。
我想对用户隐藏命令的复杂性,因此用户只调用诸如getTemp()或setMaxtemp(20)之类的方法而无需传递命令。
挑战:
假设有一个新的温度传感器仅支持setMaxtemp()。在这种情况下,我将使用不同的传感器类,但我仍然想使用已经存储的设置最大温度命令。和/或可能对数据进行不同操作的同一命令集。
所以我们有:1.传感器类2.命令集3.数据4.数据操作
问题:
动态链接这些以形成正确的请求字符串并将其发送给正确的传感器类花了我几天,但我还没有通过传统的Java方法提出一个好方法。
我需要去制定规则引擎吗?(由于该应用程序将在Raspberry Pi中运行,因此我不确定它是否可以处理)。还是有某种处理这种情况的模式?预先感谢!
因此,描述了一个传感器接口。
public interface Sensor {
int getTemp()
void setMaxTemp()
//etc.
}
您也可以拥有 AbstractSensor 类,该类提供传感器接口中方法的天真实现。
public abstract class AbstractSensor() {
private int _temp = 0;
private int _maxTemp = 0;
@Override
public int getTemp() { return _temp; }
@Override
public void setMaxTemp(int maxTemp) { _maxTemp = maxTemp; }
//etc.
}
然后,您可以创建单个传感器类作为实现传感器或扩展AbstractSensor(如果他们无法实现所有方法)。
public BrandASensor implements Sensor {
//Implementation here...
}
public BrandFSensor extends AbstractSensor {
//Implementation here
...
}