J'ai trois classes:Question de conception: Le client doit-il créer la session et le socket?
- clients
- session
- Socket
deux session & Socket depeand sur le client pour créer les deux objets.
Une session se déroule sur un socket et aucune socket n'est créée sans session. Le client doit-il avoir une fonction qui crée une session de manière publique et une socket en privé?
Cela ne viole-t-il pas la loi de demeter?
EDIT: 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 doit créer la session.
Ai-je raison?
Le client contient des objets internes qui se connectent au serveur. Une fois la connexion établie, j'ai actuellement une fonction qui retourne une nouvelle socket. L'objet session accepte un client et dans le ctor il appelle la fonction qui crée le nouveau socket pour cette session. Est-ce que cela devrait être changé? Si c'est le cas, comment? –
Encore une fois, si 'Client' n'utilise pas le socket, la création du socket devrait probablement être déplacée dans' Session'. – Oded
Mais toutes les données requises pour créer un socket sont sur le client puisque les internes qui se connectent au serveur sont également utilisés pour créer un socket (c'est un donné de ma bibliothèque réseau). Je ne peux pas ignorer la classe client car elle suit les sessions. –