デザインの質問:クライアントはセッションとソケットの両方を作成する必要がありますか?
-
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
それが両方を作成するということです Session
と Socket
, 、 これ以上何もない。
もしも Client
両方を使用する必要がありますが、違反はありません。それが作成する場合 Socket
それを提供するために Session
, 、私はこれを言うでしょう は 違反と Session
取得する必要があります Socket
自体。
所属していません StackOverflow