Frage

Ich habe drei Klassen:

  • Klient
  • Sitzung
  • Steckdose

Sowohl Sitzungen als auch Socket sind vom Client abgewiesen, um beide Objekte zu erstellen.
Eine Sitzung abhängt auf einer Steckdose und keine Sockets werden ohne Sitzung erstellt. Sollte der Client eine Funktion haben, die pubumisch und einen Sockel privat erstellt?
Verletzt es nicht gegen das Gesetz des Demeter?
Bearbeiten: Aktueller Code:

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
}

Jetzt sagt mir etwas, dass die Sitzung nicht dafür verantwortlich sein sollte, den Socket vom Kunden zu erhalten und dass der Kunde die Sitzung erstellen sollte.
Habe ich recht?

War es hilfreich?

Lösung

Es hängt davon ab, ob. Alles, was Sie uns erzählen Client ist, dass es beide schafft Session und Socket, nichts mehr.

Wenn Client Muss beides verwenden, dann gibt es keinen Verstoß. Wenn es nur schafft Socket Um es zur Verfügung zu stellen Session, Ich würde das sagen ist eine Verletzung und Session sollte bekommen Socket selbst.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top