Я работаю над программой чата.
[JAVA] [Без RMI, только сокеты] [Пример команды: 'sentToMike', 'Disconnect', 'Login' и т. Д.]
Как я могу отправить объект «команда» через сокеты для непосредственного выполнения на сервере?
Я хочу отправлять всевозможные сообщения (Strings, Audio, Video) и все виды объектов Command многим клиентам, любым из них. Я знаю, что существуют объекты ObjectInput / Output и все такое. Моя проблема - попытка получить полиморфное решение.
Например, я хочу создать интерфейс IMessage с сигнатурой метода "execute ()". Затем я бы создал AudioMessage, TextMessage и т. Д., Который реализует IMessage. Проблема в том, что в какой-то момент мне нужно поделиться кодом сервера с клиентом и наоборот, чтобы сервер и клиент знали все объекты, участвующие в каждом исключительном методе. И хуже всего то, что если я отправлю IMessage, сервер не будет знать, какой конкретно тип сообщения, так что я не знаю, к какому типу приведен объект. То же самое произойдет, когда я отправлю команду клиенту.
Я могу работать над решением с помощью простых текстовых строк "команд" и большим и некрасивым переключателем на сервере (и, между прочим, на клиенте), но я считаю, что это не элегантно, мне нужно создать класс-оболочку с помощью команды string плюс объект того типа, который я хочу отправить, плюс строку с типом отправленного объекта (Message [String type; String command; IMessage-> AudioMessage]), это не будет полиморфным, поскольку мне нужно будет использовать переключатель, чтобы спросить тип объекта и затем привести его к AudioMessage, например. Кроме того, мне нужно было бы поделиться большим количеством кода между сервером и клиентом, и я не знаю, будет ли это нормально
Любой совет будет очень кстати, может быть, мне нужен шаблон проектирования, шаблон архитектуры, я понятия не имею.