2011-02-14 67 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(...) { 

    } 
} 

爲了使測試更容易,你可以有此設備類實現設備接口 - 它有助於使發展循環更嚴格,如果你可以測試邏輯與設備交互無需處理的設備本身。