我正在用Java編寫一個串行接口。它使用JNA來訪問底層本機API。 I'have定義包含經典的方法(打開,讀,寫,關閉...)一SerialPort
接口:如何在Java中擁有平臺類?
public interface SerialPort {
void open(String portName) throws IOException;
void close() throws IOException;
void write(byte[] data) throws IOException;
byte[] read(int bytes) throws IOException;
byte[] read(int bytes, int timeout) throws IOException;
void setConfig(SerialConfig config) throws Exception;
SerialConfig getConfig();
}
現在,我想根據運行的平臺上有落實。有什麼好辦法做到這一點?我需要在運行時加載類嗎?
如果我創建兩個類實現此接口(SerialPortUnix
和SerialPortWin32
)。我想有一個功能,可以基於平臺返回一個或另一個。
我該如何正確地做到這一點?
感謝,
替代工廠模式和運行時執行決議將是使用依賴注入框架(如春季)與不同配置文件/構建不同的操作系統,即您將爲不同的操作系統生成不同的工件。 –
這種解決方案的優勢是什麼?看起來很複雜。 –
它比較適合開放關閉原則(https://en.wikipedia.org/wiki/Open/closed_principle),因爲無論何時您想添加新的操作系統,您都不需要修改「if-else」構造支持。 –