Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在多传感器网络中形成命令?_Java_Design Patterns_Dynamic_Sensors_Rule Engine - Fatal编程技术网

Java 如何在多传感器网络中形成命令?

Java 如何在多传感器网络中形成命令?,java,design-patterns,dynamic,sensors,rule-engine,Java,Design Patterns,Dynamic,Sensors,Rule Engine,某些命令需要发送到传感器。我希望有一个表示一组传感器的传感器类。其思想是,在实例化期间,将此传感器对象与它应该使用的命令集链接。来自不同供应商的两个温度传感器将由同一类表示,但链接到不同的命令集 我想对用户隐藏命令的复杂性,以便用户只调用getTemp()或setMaxTemp(20)之类的方法而不传递命令 挑战: 假设有一个新的温度传感器只支持setMaxTemp()。在这种情况下,我将使用不同的传感器类,但我仍然希望使用已存储的设置最高温度命令。和/或可能是对数据进行不同操作的同一命令集 因

某些命令需要发送到传感器。我希望有一个表示一组传感器的传感器类。其思想是,在实例化期间,将此传感器对象与它应该使用的命令集链接。来自不同供应商的两个温度传感器将由同一类表示,但链接到不同的命令集

我想对用户隐藏命令的复杂性,以便用户只调用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(如果它们不能实现所有方法的话)


}

我发现你的问题有点不清楚。您介意添加一个更广泛的示例吗?我认为传感器只“感测”(=生成的读数)。如果您的传感器可以处理setMaxTemp(20),那么它似乎实际上是在控制温度,不再是一个简单的传感器。您需要添加以下实际示例:a)用户将看到什么,b)程序将生成什么;否则这个问题可以用很多不同的方式来解释。@setMaxTemp的tucuxi我指的是设置阈值。一些传感器在超过阈值时发出警报,但这只是一个示例。主要问题是使命令可供许多传感器类使用。
public BrandASensor implements Sensor {
//Implementation here...
}

public BrandFSensor extends AbstractSensor {
//Implementation here
...