0

私には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
}

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

4

1 に答える 1

0

場合によります。あなたが私たちに言っているのClientは、それが と の両方Sessionを作成するということSocketだけです。

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

于 2010-05-14T06:36:36.883 に答える