4

Suns のシリアル ポート ライブラリを使用して 2 つのシリアル ポート デバイスと通信している Java のプロジェクトに取り組んでいます。どういうわけか、デバイスへの接続を常に開いたままにして、それらのイベントを処理する必要があります(データが回復したとき...)。アプリケーションは (SOAP を介して) ユーザーと対話しており、コンソール アプリケーションです (後でアプリケーション サーバーに移動される可能性がありますが、今は無視してください)。

問題は、デバイスをどのように扱うかです。今のところ、デバイスを処理するオブジェクトを返す 2 つの静的変数を持つ静的クラスがあります。そのクラスの静的コンストラクターで、接続を開き、初期パラメーターなどを設定します。次に、アプリケーションでデバイスが必要になるたびに、Device.MyDevice、Device. MyDevice2など...これを行うためのより良い方法はありますか、これは大丈夫ですか?

デバイスへの接続に問題はありません。アーキテクチャに関するアドバイスが必要です。

ありがとう

4

1 に答える 1

3

私の経験では、静的コンストラクターは面倒です。また、シリアル通信を模擬する単体テストを作成してロジックをテストしたい場合、このアーキテクチャでは困難です。

別の方法は、いくつかの構成引数 (たとえば、どのシリアル ポートを使用するか) を取るコンストラクターを持つ Device クラスを持ち、接続する 2 つの実際のデバイスをクラスの public static final フィールドとして持つことです。このようなもの:

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

    public Device( ... ) {

    }
}

テストをさらに簡単にするために、このデバイス クラスが実装する Device インターフェイスを用意することができます。デバイス自体を扱わずにデバイスと対話するためのロジックをテストできれば、開発ループをよりタイトにすることができます。

于 2011-02-14T21:56:03.147 に答える