[Из песочницы] Операция «Ы» и новая библиотека ABI
Рад приветствовать тебя, дорогой читатель!
В данной статье пойдет речь о новой библиотеке «ABI Model Pattern». Наверное, было бы логично предоставить какой-то пример, чтобы показать все возможности этой библиотеки, но вот и нетушки… Сейчас я опишу только достаточный минимум, чтобы познакомить тебя с ней, предоставить твоему воображению создать правильную картинку и использовать её для реализации всех идей, которые придут тебе в голову.
Если подумать, каким образом можно создавать необходимые модели и поддерживать соответствие данных оным? Возникает следующая мысль:
- во-первых, нам нужно как-то физически описать модель, то есть понять, что это некоторая сущность, с которой можно взаимодействовать;
- во-вторых, получить в конечном итоге нечто такое, с чем было бы удобно продолжать работу, не выходя за рамки функциональности этой модели.
Основные понятия
Добавлю в эту статью немного терминологии из данной библиотеки, так как в дальнейшем я буду называть всё словами, более подходящими для описания того, как всё работает.
- Библиотека имеет свой графический интерфейс для удобства создания моделей, который сопровождается всплывающими окнами, предупреждениями и различными подсказками;
- Модель — это описание, которое представляется набором параметров/полей, а параметры в свою очередь имеют определенные свойства;
- Entity — это имплементация (инстанс) модели. Будем считать, что это объект хранящий данные, которые соответствуют требованиям модели.
Чтобы более ясно подчеркнуть слова выше, представлю страницу создания модели из интерфейса:
Таким образом, для того чтобы создать Модель, нам необходимо дать ей имя, наделить её параметрами и указать, каким требованиям должен соответствовать каждый из них.
Отдельно хочу отметить специальный чекбокс возле поля для ввода названия параметра. Этот чекбокс даёт возможность сделать связь между параметром и колонкой в базе данных, что стоит рассматривать как связь <Модель> — <Таблица>, а точнее <Параметр> — <Колонка>.
Я не буду углубляться в самые тонкие и глубинные места этой библиотеки (да, я действительно думаю, что у тебя найдётся время для чего-то более важного, чем читать то, что я здесь пытаюсь объяснить и бла-бла-бла), так как хочу объяснить только лишь смысл и предназначение. Одна из идей использования библиотеки представлена на картинке ниже.
Подводим итоги
Вот что мы имеем на сегодняшний день:
- библиотеку, с помощью которой можно создавать модели (которые в дальнейшем будут храниться в … и будут валидироваться и парситься в … — я хочу, чтобы эта функциональность осталась скрытой в классах самой библиотеки как нечто что работает и не привлекает к себе дополнительного внимания);
- entity, с которой ты сможешь работать, обновлять и получать значения, не думая о том, что в ней будут данные не соответствующие заявленным требованиям.
Эту библиотеку стоит рассматривать как набор функций, которые управляют большим множеством созданных моделей требуемого вида и если этот вид перестаёт соответствовать заявленным требованиям, то ты получишь соответствующую ошибку из библиотеки.
Если ещё проще, давайте рассмотрим, какие вы получаете возможности, подключая данную библиотеку:
- Простота создания, редактирования и удаления моделей в приложении при помощи интерфейса;
- Автоматическую валидацию по введенным свойствам для каждого параметра модели;
- Возможность автоматического создания таблиц и колонок в базе данных;
- Целостность данных в Entity;
- Простота использования Entity на базе созданной модели;
- Лёгкость в переносе библиотеки с сохранением всех моделей в другие проекты;
- Самодостаточное дополнение к любому проекту, которое не зависит от чего-либо стороннего для работы.
Пытался максимально просто рассказать о возможностях данной библиотеки, дабы не сбить вас с той мысли, которая появилась у вас после прочтения данной статьи, и предлагаю каждому заинтересовавшемуся лично попробовать, поклацать и посмотреть, что библиотека из себя представляет. Спасибо за уделенное время, потраченное на прочтение всех этих букав.
Ссылка на «ABI Model Pattern v. 0.1.0 demo» в github
Благодарность
А прямо вот здесь, именно то самое лучшее место для того, что поблагодарить Дениса Гончарова (@denaikG), за очень многое: поддержку, помощь в разработке, а также реализацию интерфейса для библиотеки, с помощью которого появилась возможность управлять моделями.
Ваше мнение очень важно для понимания в каком направлении двигаться и, каков интерес вызван у вас, дорогих, к этой библиотеке. Критику, пожелания и комплименты оставляйте в комментариях.