Question de conception: le client devrait-il à la fois créer la session et la prise?
-
26-09-2019 - |
Question
J'ai trois cours:
- Client
- Session
- Prise
Session et socket dépassent le client pour créer les deux objets.
Une session de dépassement sur une prise et aucune sockets n'est créée sans session. Le client devrait-il avoir une fonction qui crée une session pubalement et une prise en privé?
Cela ne viole-t-il pas la loi de Demeter?
Modifier: Code actuel:
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
}
Maintenant, quelque chose me dit que la session ne devrait pas être responsable d'obtenir la prise du client et que le client devrait créer la session.
Ai-je raison?
La solution
Ça dépend. Tout ce dont vous nous parlez Client
est que cela crée les deux Session
et Socket
, rien de plus.
Si Client
Doit utiliser les deux, alors il n'y a pas de violation. S'il crée seulement Socket
Afin de le fournir à Session
, Je dirais ça est une violation et Session
devrait avoir Socket
lui-même.