私は、学校プロジェクトのためにピアツーピアのファイル共有アプリケーションを開発しようとしており、その設計について考えていました。デザインの選択肢:ピアツーピアのアプリケーション
1)
そのID、などのすべての状態情報を保持しているピアクラス、その好ましい隣人、ピースの数など
と
A:私は、二つの選択肢で立ち往生していますPeerクラスのインタフェースとして機能するPeerManagerクラス。それはPeerオブジェクトへの参照を含み、それを操作するメソッドを含みます。メソッドの中にはupdatePreferredNeighbours、別のピアへの接続や切断、generateLogsなどがあります。
しかし、オブジェクト指向設計について考えると、ピアオブジェクトはその動作を担当する必要があります。すなわち、第2の代替に私をもたらします:
2)
すべて、他のピアに接続する前に
)peerManagerにあった隣人などを(更新のような方法とその実装を含むピアインターフェイスインターフェイスは、すべての状態情報を含み、インターフェイス内のすべてのメソッドも実装するPeerImplと呼ばれます。
しかし、このアプローチで私の問題は、それはImplクラスを混乱させるということです。状態は多くの情報で構成されているので、他のスレッドが状態を更新できるように、getterとsetterを持つ必要があります。また、インタフェースのすべてのメソッドを実装する必要がある場合は、実装クラスを非常に大きく維持したり、デバッグすることも難しくなります。
この問題にアプローチする別の方法はありますか?それともどちらを選ぶべきですか?
PS:投稿が大きすぎるようにプロジェクトのすべての要件を与えることはできませんが、私が説明したことは多かれ少なかれプロジェクトの本質です。
をピアマネージャで使用する場合、マネージャクラスのピアを操作するメソッドと、すべての状態情報を、Peerクラスのgetterおよびsetterとともに使用します。だから、私ははるかに少ない混乱を参照してください。 しかし、私はあなたが2つのオブジェクトクラスにデータを分離することについて良い点を作ったと思います。私は確かにこれを達成する方法を考えてみるつもりです。 – Sushant