Привет.
Хочу показать свою утилиту для управления пользовательскими настройками, для получения критики, советов.
Собственно вот репозиторй - ГитХаб
Для чего оно - для легкого управления теми же, настройками.
В чем собственно смысл - я устал постоянно делать костыли для управления настройками. Мне от них было нужно 2 функции - обновление файла при изменении объекта и наоборот, обновление объекта при обновлении файла.
Сериализация и десериализация выполнена с помощью Gson, обновление объекта с помощью рефлексии, для мониторинга состояния был использован ScheduledExecutor (1, статичный, мне кажется этого достаточно).
Как использовать:
- Создаём класс с нужными полями, реализуем интерфейс UserPreferences. Затем нужно переопределить 2 метода: userPreferencesFile (файл с которым работает объект), hashCode (ОБЯЗАТЕЛЬНО !!!) (для сравнения объектов на наличие обновлений)
- Регистрируем объект: UserPreferences.registerInstance(инстанс).
В README есть пример, и в пакете примеров еще 1.
Всё, обновления объекта автоматически сохраняются в файл, обновления файла автоматически отображаются в объекте.
В коде есть кое-какие пояснения, если что не понятно - подскажу. Хотел бы услышать что сделано не так / что можно улучшить и т.д.
Александр Федоров
11 уровень
Утилита для управления пользовательскими настройками
Комментарии (8)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Александр Федоров
3 февраля 2020, 13:11
Вверх 📀
0
Стас Пасинков Software Developer в Zipy Master
19 января 2020, 21:20
а что делать если мой класс уже наследуется от другого моего класса? я не смогу пользоваться этой штукой, да?
0
Александр Федоров
20 января 2020, 05:31
Сама утилита может работать с наследованием, вот эта строка отвечает за проход по родителям.
Но так как в джаве множественное наследование невозможно - нужно будет делать какой-то класс прослойку.
0
Стас Пасинков Software Developer в Zipy Master
20 января 2020, 07:02
так может сделать через интерфейс? или аннотацию?)
мне кажется интерфейс тут лучше всего подходит.
например, я своему классу, у которого наследование уже занято - указываю, что он имплементит твой интерфейс. у тебя в интерфейсе указаны просто методы, которые мне надо будет реализовать. и все :)
+2
Александр Федоров
20 января 2020, 08:55
Через интерфейс вряд ли выйдет, по крайней мере сейчас как это сделать я не понимаю.
Насчет аннотации - идея хорошая, нужно подумать. Если интересно - можешь подписаться на репозиторий.
0
Александр Федоров
20 января 2020, 12:27
Я прогулялся, подумал над твоим предложением и организовал его )
Правда пришлось немного раздуть проект, но ничего, теперь это можно использовать в случае если класс уже наследуется.
Скажи что думаешь, хорошо получилось или нет :)
0
VladimirMaster
19 января 2020, 18:44
Саша, управления пользовательскими настройками чего?
Первое замечание, дальше пока не смотрел.
1. Всегда заноси в .gitignore файлы: .idea и *.iml Они не нужны в репозитории.
0
Александр Федоров
20 января 2020, 05:42
Ну пользовательскими настройками пользователя, логично же :)
Ну есть у пользователя гуишка, обновляет он в ней какие-то значения - они сразу в файлик, или если файлик обновляет - можно их сразу в гуи отображать. Это конечно грубый пример, так как с гуи еще для этого поработать нужно будет. Но суть он описывает довольно ясно.
Да и с примера, как мне показалось должно всё стать понятно.
Замечание приму во внимание, спасибо.
0