我正在开发Java项目,该项目使用Suns的串行端口库与两个串行端口设备进行通信。我必须以某种方式保持与设备的连接始终打开并处理它们的事件(在数据恢复...)。应用程序正在与用户交互(通过SOAP)并且是一个控制台应用程序(稍后它可能会移动到应用程序服务器,但暂时忽略它)。
问题是如何处理设备。现在我有一个带有两个静态变量的静态类,它返回处理设备的对象。在该类的静态构造函数中,我打开连接并设置初始参数等。然后,无论何时我需要应用程序中的设备,我都可以通过以下方式获取它:Device.MyDevice,Device。 MyDevice2等...... 有没有更好的方法来做这个还是这个好吗?
请记住,我没有连接设备的问题,我需要建筑建议。
由于
答案 0 :(得分:3)
我的经验是静态构造函数可能很混乱。此外,如果您想通过编写单元测试来模拟串行通信来测试逻辑,那么这种架构会让它变得困难。
另一种方法是让Device类具有一个构造函数,该构造函数接受一些配置参数(例如,使用哪个串口),并将您要连接的两个实际设备作为该类的公共静态最终字段。像这样:
public class Device {
public static final Device Device1 = new Device(...);
public static final Device Device2 = new Device(...);
public Device( ... ) {
}
}
为了使测试更容易,您可以拥有此设备类实现的Device接口 - 如果您可以测试与设备交互的逻辑而不处理设备本身,则有助于使开发循环更紧密。