Всем привет!
Хочу поделиться своим небольшим проектом:
Взял одну из больших задач (Чат) и изменил, обновил, добавил много нового и вот что из этого вышло:
Что изменено/добавлено по сравнению с оригинальной задачей:
- Конфигурацию читает из файла properties при помощи класса ResourceManager
- Добавлены чат румы и возможность клиенту создавать свои чаты
- Добавлены приватные сообщения
- Полностью новый swing интерфейс клиента
- Добавлены горячие клавиши для отправления сообщений и команд клиента
- Добавлено окно настроек
- Добавлены смайлики
- Сделаны вкладки для отображения сообщений из разных чат румов и приватных чатов
- Добавлен счетчик непрочитанных сообщений
- Сделано дерево пользователей для отображения пользователей в чатах и вызова приватных сообщений
- Бот научился отвечать смайликом на смайлик
- Добавил логгер log4j
- Добавил добавил тесты jUnit
- Завернул все это в мавен и разбил на модули
ссылка на гит хаб: https://github.com/DevCorvette/chat
Кому интересно, заходите, смотрите, комментируйте, буду рад :)
Конструктивной критике тоже буду рад.
P.S.: Тот кто еще не решал задачу - не ищите у меня готовых решений, там практически все переписано ;)
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
и тогда сразу еще вопрос: почему бы класс Client не сделать интерфейсом и вынести туда все необходимые методы для любой реализации интерфейса. чтоб если я например захочу написать свою реализацию клиента (например веб-клиент) — у меня не были бы связаны руки наследованием класса Client, а я смог бы наследоваться от любого другого класса, и просто реализовать недостающие методы. в том числе и те, которые выводят сообщения об ошибках (потому что сейчас они просто сыпятся в консоль, как я понял, а с веб-клиентом никто ту консоль не увидит. ну кроме сисадмина, который потом будет читать логи веб-сервера) :)