![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Hogan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 13.5.2007 Репутация: нет Всего: нет |
При написании чата передаваемое сообщение должно быть произвольным объектом и имплементится от некоторого интерфейса. Как в реализации этого интерфеса задать тип сообщения (например - строка)?
|
|||
|
||||
Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 14 Всего: 62 |
Hogan
Проверка типа в runtime не подходит? |
|||
|
||||
Hogan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 13.5.2007 Репутация: нет Всего: нет |
Не понял. Можно поподробнее.
Вроде мне не проверить тип надо, а задать его.. |
|||
|
||||
Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 14 Всего: 62 |
как твое сообщение выглядит? приведи код.
Я имел в виду, что в коде у тебя может быть написано Object, но передаешь то ты всегда экземпляр конкретного класса потомка и можешь через instanceof проверить что это за класс (если знаешь чего ждать), или через getClass() (универсальный способ). Добавлено через 1 минуту и 42 секунды Вчитался в твое сообщение и подумал, что возможно не правильно тебя понял. Все таки нужен код.. |
|||
|
||||
Hogan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 13.5.2007 Репутация: нет Всего: нет |
Насчет Object в интерфейсе не уверен. Нужно как-то теперь описать класс TextMessage c методом typeOfMessage() (пока не понял, что он должен возвращать - Object поставил наугад) так, чтобы в основном коде при создании объекта типа TextMessage мы имели просто стринговый объект. ЗЫ. Это все нужно для того, чтобы максимально абстрагироваться от типа сообщений (строки, апельсины, файлы ит.д) |
|||
|
||||
w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
-------------------- ![]() ![]() |
|||
|
||||
Hogan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 13.5.2007 Репутация: нет Всего: нет |
А что должны делать методы Class typeOfMessage() и Object messageBody() ??
|
|||
|
||||
w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
Второй возвращает сообщение, а первый - его тип. -------------------- ![]() ![]() |
|||
|
||||
Hogan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 13.5.2007 Репутация: нет Всего: нет |
Первый раз такое делаю..с трудом шарю
![]() Можно примерчик небольшой |
|||
|
||||
nornad |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Остальные методы (установку тела, конструктор и ещё что, если надо), думаю, ты и сам легко напишешь. ![]() А использовать можно будет так:
-------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
||||
|
|||||
Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 14 Всего: 62 |
А почему бы без всякого typeOfMessage() не сделать:
и не дублировать информацию. |
|||
|
||||
nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Потому что, если сообщения простые и работа с ними (в коде) занимает мало места, то можно сделать всего один класс сообщения, который будет хранить не только само сообщение, но и его тип. А возможно и делать какие-то полезные вещи с сообщением. В твоём же случае надо будет делать кучу разных классов.
В любом случае, автору проще определить, какой из вариантов ему удобнее. Хотя лично я бы делал кучу классов под разные сообщения - никогда наперёд не знаешь, насколько всё может усложниться. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
Hogan, а что делает с сообщением обработчик (получатель)?
-------------------- ![]() ![]() |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Проверку классов без необходимости лучше не делать. Если типов сообщений не так много, лучше использовать шаблон проектирования Visitor:
Если типов сообщений много, нужно использовать регистрацию типов сообщений. |
|||
|
||||
nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Мало того, что их должно быть немного, надо ещё иметь их список практически неизменным. Хотя, в данной задаче они вряд ли будут плодиться как кролики. ![]() -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 14 Всего: 62 |
Просто мне показалось, что вопрос не о проектировании, а о кодировании конкретного места. Для проектирования маловато информации. Хороший вопрос. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |