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