В игре серверу, возможно, придется отправить клиенту пакет с информацией, допустим, добавить Enemy. Данные, чтобы добавить такого врага, могут быть похожими на каждого врага (позиция, id ...), но есть необходимость различать, какой он враг. Это зомби? Оборотень? Что ж.Организация пакетов для сообщений подобного типа, но различного типа
Я помню два способа сделать это:
1 - Создание Enum.
Итак, у меня могло бы быть Enum с каждым типом врага, и в моем Пакете я бы послал этот тип. Плюсы: Только один Пакет для добавления нескольких типов врагов, только один способ обработки его приема.
Против: Каждый раз, когда я хочу добавить нового врага, я должен создать новую запись в перечислении, а метод, который получает, скорее всего, будет раздражающим большим случаем переключения.
2 - Создайте пакет на врага, с разными «ручкой» метод
Pros: Это «кажется» более организованным, так как каждый элемент имеет назначенный пакет и метод, и нет необходимости, чтобы добавить запись в перечисление (хотя идентификатор должен добавить новый метод ручки, так что ... да.)
Недостатки: Многие враги имеют в виду множество пакетов, что означает многие методы обработки, которые могут быть беспорядком.
Итак, в основном, tl: dr, у меня есть «PacketAddEnemy» с перечислением типа EnemyType и несколькими коммутационными шкафами, или у меня есть «PacketAddZombie», «PacketAddWerewolf» и т. Д., Но в итоге со спамом пакетов и методов.
Я предпочитаю первый вариант, но мне не нравятся оба. Интересно, есть ли интересные альтернативы?