デザインの質問:クライアントはセッションとソケットの両方を作成する必要がありますか?

StackOverflow https://stackoverflow.com/questions/2832199

  •  26-09-2019
  •  | 
  •  

質問

私には3つのクラスがあります:

  • クライアント
  • セッション
  • ソケット

セッションとソケットの両方がクライアントに繰り返され、両方のオブジェクトを作成します。
セッションがソケットに繰り返され、セッションなしでソケットは作成されません。クライアントには、公開セッションと個人的にソケットを作成する関数が必要ですか?
デメテルの法則に違反していませんか?
編集:現在のコード:

class Client
{
private:
  // Connection details
public:
  shared_ptr<Socket> createSocket(); // returns a new socket if the connection is opened
}

class Session
{
public:
  Session(Client &); // Accepts a client and gets a socket for i/o to the server
}

ここで、セッションはクライアントからソケットを取得する責任を負わないべきではなく、クライアントがセッションを作成する必要があることを教えてくれます。
私は正しいですか?

役に立ちましたか?

解決

場合によります。あなたが私たちに言っているすべて Client それが両方を作成するということです SessionSocket, 、 これ以上何もない。

もしも Client 両方を使用する必要がありますが、違反はありません。それが作成する場合 Socket それを提供するために Session, 、私はこれを言うでしょう 違反と Session 取得する必要があります Socket 自体。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top