Следует ли хранить сокеты для TCP / IP и т. Д. В отдельном классе?(Джава) - PullRequest
1 голос
/ 26 марта 2012

Не думаю, что мне нужно публиковать свой код (его много), но я рад, если будет предложено.

Я создаю распределенную гоночную игру на Java, которая в настоящее время имеет классы JFrame, JPanel и Car. Я ищу лучший способ реализовать следующий этап - распределенную часть - я использую TCP / IP, а не UDP, так как это в основном часть требований, поэтому нет необходимости комментировать это.

Итак, я задаю вопросы клиентским и серверным сокетам, потокам, буферизованным читателям и т. Д.

Потому что, я думаю, вы могли бы сказать, лучшая практика - мне интересно, стоит ли мне начинать реализацию, отделяя все это от основного для элегантности и, возможно, расширяемости и т. Д.

1 Ответ

3 голосов
/ 26 марта 2012

Как правило, вы хотите использовать ОО для разделения интересов. Это означает, что вы делите то, что нужно сделать, на несколько управляемых кусков. Затем вы выбираете чистый понятный интерфейс для каждого чанка, который скрывает детали реализации, не относящиеся к пользователю класса.

В вашем случае рассуждение может пойти примерно так (но это полностью зависит от вашей проблемы).

  1. Один класс обрабатывает подключение / отключение и возвращает простой объект, представляющий отправленное или полученное сообщение. Этот класс ничего или мало знает о содержимом, передаваемом по линии, но он знает, как установить соединение и что делать с разъединением.
  2. Следующий класс в строке преобразует простые объекты сообщений в полезные объекты с удобными методами, которые просты в обращении.
  3. Другой класс отвечает за приведение этих объектов в действие.

Конечно, когда одна из этих задач становится слишком большой, вы можете разделить их еще дальше.

В большинстве случаев это приведет к тому, что один объект будет управлять одним сокетом.

...