2011-02-14 69 views
4

我正在开发一个Java项目,该项目使用太阳的串行端口库与两个串行端口设备进行通信。我必须以某种方式保持与设备的连接始终处于开启状态,并处理它们的事件(关于数据恢复...)。应用程序正在与用户进行交互(通过SOAP),并且是一个控制台应用程序(稍后它可能会移动到应用程序服务器,但现在忽略它)。应用程序体系结构:保持在java中打开串行连接

问题是如何处理设备。现在我有一个带有两个静态变量的静态类,它返回处理设备的对象。在该类的静态构造函数中,我打开连接并设置初始参数等。然后,无论何时我需要应用程序中的设备时,都可以通过类似如下方法获取它:Device.MyDevice,Device。 MyDevice2等... 有没有更好的方式做到这一点,或者这是一个好吗?

请记住,我没有连接到设备的问题,我需要建筑建议。

谢谢

回答

3

我的经验是,静态构造函数可能是混乱的。另外,如果你想通过编写单元测试来模拟串行通信来测试逻辑,这个架构会让它变得很难。

另一种方法是让一个Device类具有一个构造函数,该构造函数接受一些配置参数(例如,使用哪个串行端口),并将两个实际设备连接为该类的公共静态最终字段。事情是这样的:

public class Device { 
    public static final Device Device1 = new Device(...); 
    public static final Device Device2 = new Device(...); 

    public Device(...) { 

    } 
} 

为了使测试更容易,你可以有此设备类实现设备接口 - 它有助于使发展循环更严格,如果你可以测试逻辑与设备交互无需处理的设备本身。