Вопрос дизайна: должен ли клиент создавать сеанс и сокет? - PullRequest
0 голосов
/ 14 мая 2010

У меня есть три класса:

  • Клиент
  • Session
  • Розетка

И Session & Socket зависят от клиента для создания обоих объектов.
Сеанс зависит от сокета, и без сеанса сокеты не создаются. Должен ли клиент иметь функцию, которая создает сеанс публично и сокет приватно?
Разве это не нарушает закон Деметры?
РЕДАКТИРОВАТЬ: Текущий код:

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
}

Теперь что-то говорит мне, что сеанс не должен отвечать за получение сокета от клиента и что клиент должен создать сеанс.
Я прав?

1 Ответ

0 голосов
/ 14 мая 2010

Это зависит. Все, что вы говорите нам о Client, это то, что он создает и Session, и Socket, и ничего более.

Если Client нужно использовать оба, то нарушения не будет. Если он создает Socket только для предоставления Session, я бы сказал, что является нарушением, и Session должен сам получить Socket.

...