Designfrage: Sollte der Kunde sowohl die Sitzung als auch die Socket erstellen?
-
26-09-2019 - |
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?
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.