2011-10-21 13 views
1

私のアプリケーションの一部の設計を改善したいと思います。サーバーから受信したデータ(TCP/UDP)によってユーザーインターフェイスが更新されるスイングアプリケーションです。私はドメインオブジェクト(POJO)をクラスのコンストラクタに渡し、サーバと接続し、データを送受信し、getterとsetterメソッドを直接使用します。アプリケーション設計 - ドメインオブジェクトの更新

TcpProtocolクラスの中で、ある種のFactoryクラスを使用して正しいオブジェクトを作成しています。 ドメインオブジェクトとネットワークプログラミング部分を切り離したいと思います。これに使用する共通のパターンがいくつかありますか?私はDAOとバリューオブジェクトについて考えていましたが、これはJavaEEアプリケーションで一般的に使用されていました。それらは私が見る唯一のものですが、誰かがより良い命題を持っているなら私に知らせてください。 ありがとうございます。

答えて

0

は、一般的なルールとして、私はそれを継承し、拡張性の他の形態を複雑にするので、設計のにおいであることをコンストラクタで非自明なコードを考えてみましょう。

作成後にオブジェクトをネットワークから更新する必要がない場合は、Factoryを使用してPOJOを作成することができます。私はValueObjectsを回避する傾向があります。通貨/日付のようなデータをほとんど何も入れていない場合を除き、そうでなければゲッター/セッターの束になります。

オブジェクトを使用中にネットワークにアクセスする必要がある場合は、Proxyにして、すべてのネットワークコードを処理するDAOを渡すことができます。テストの場合は、代わりにMock/Stubを渡します。

0

あなたのコンストラクタからのネットワークアクセスコードを削除することです、あなたの目標を達成するスタート(私はあなたが一つのクラスの連絡先のネットワークを持っていて、そのコンストラクタにあなたのPOJOを渡していると仮定しています)。代わりに、ネットワークに接続するユーティリティを作成します。あなたのデータストリームから正しいオブジェクト型をインスタンス化する

、あなたは、特定のオブジェクトタイプにストリームを適応する方法を知っているFactoryを作成することを検討することがあります。

0

たぶんのjava.ioのObjectInputStreamを使用してObjectOutputStreamのは、それが転送されたオブジェクトのクラスに依存しないため、これを行うための簡単な方法かもしれませんか?

0

私が示唆していることは、Observerパターンを適用することです。オブザーバーと一緒にMediatorパターンを適用する必要があるかもしれませんが、デザイン がこのような複雑さを保証するかどうかは注意深く確認してください。

あなたのUIコードは、提示されたモデルの変更を「リッスン」しています。変更が行われると(おそらくネットワークにバインドされたコードから)、イベントが発生し、それに応じて自分自身を更新するためにUIに通知されます。

関連する問題