Паттерн “Репозиторій“ в JS

В попередній статті ми розібрались з паттерном Специфікація та тим як його можно використовувати. Сьогодні ми поговоримо про логічне продовження в покращенні нашого коду. Паттерн репозиторій.


Визначення

Почнемо з визначення. Репозиторій - це паттер проектування який розділяє рівні доступу до данних з рівнем бізнес-логіки.

Розділення

Подивимось на шматочок коду з якогось проекту.

В цьому прикладі ми бачимо як в одній функції ми одночасно робимо валідацію і зберігаємо в базу данний нового користувача. З точки зору архітектури, це поганий приклад. Правильно було би винести валідацію в окрему функцію. А функцію взаємодії з базою в окрему. Це виглядало би так

Цей код краще через можливість перевикористовувати функцію валідації та зберігання. Це базовий приклад розділення бізнес логіки і роботи з данними

Репозиторій

Паттерн репозиторій це один зі способів роботи з данними в окремо від бізнес логіки. Наведу просту реалізацію репозиторія

На цьому прикладі показана реалізація репозиторія для масива. В простому пояснені репозиторій це масив обєктів і набір функцій які можно робити з цим масивом. І взаємодіяти з цим масивом можно тільки через репозиторій. Що унеможливлює зовнішне втручання і вплив на внутрішній механізм репозиторія. А також дозволяє відділити DataLayer від бізнес-логіки.

В прикладі вище ви могли бачити використання специфікацій. Одна особливість що для репозиторія з масивом треба використовувати стандартну реалізацію Специфікації. Її реалізацію на TS ви можете знайти ось тут. Причиною використання специфікації є бажання зробити цей рівень максимально незалежним від зовнішніх втручань. Тобто умови пошуку по масиву ми передаємо зовні. При тому можемо кобінувати ці специфікації.

Репозиторій для взаємодії з базою

Репозиторій можно використовувати для роботи з базою. Я покажу

Тут ми вже бачимо використання реалізацію патерна специфікації яку я показував в минулій статті. Такий репозиторій можно використовувати для розмежування шару данних від бізнес логіки. Плюс легко перевикористовувати.

Висновки

Паттерн репозиторій дозволяє розділити управління данними від бізнес логіки. А також покращити перевикористання коду. Ще одним плюсом є те що ви можете замінити базу данних прям посеред проекту. І для цього потрібно буде змінити набагато менше. А весь інший код навіть не буде знати що шось змінилось він просто буде отримувати ті самі обєкти. Я особисто вважаю що базу посеред проекту ніхто в здоровому глузді не міняє, але хто знає. Може вам знадобиться.


Всім дякую за увагу, з вас оплески і коментарі. З мене більше про архітектуру в JS

Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Владислав Лєсной
Владислав Лєсной@unnsin

636Прочитань
4Автори
17Читачі
На Друкарні з 15 квітня

Більше від автора

  • Clear Architecture для бекенда на JS

    Кожен хто займається розробкою певний час приходить до слова архітектура. Сьогодні ми подивимось на одну з парадигм проектування архітектури через призму типового JS бекенду.

    Теми цього довгочиту:

    Clean Architecture
  • Паттерн “Специфікація“ в JS чи потрібен він?

    Одним з найскладніших для мене був паттерн специфікація. Сьогодні я вам пояснити для чого він. І запропонувати свою версію реалізацію

    Теми цього довгочиту:

    Js

Вам також сподобається

  • Hello, RabbitMQ на PHP

    Реалізуємо найпростіший приклад взаємодії з брокером повідомлень за 10 хвилин.

    Теми цього довгочиту:

    Rabbitmq
  • Історія розвитку комп'ютерної техніки

    Історія розвитку комп'ютерної техніки відзначається безперервним прогресом від примітивних механічних обчислювальних пристроїв до складних електронних систем, що стали невід'ємною частиною сучасного життя.

    Теми цього довгочиту:

    Архітектура Еом
  • Кібервійна в Україні так само важлива, як і битва в окопах

    Українська та російська сторони ведуть кібервійну, спрямовану на викрадення даних та сіяння паніки. Російські атаки вже давали тривожний дзвінок, вимикаючи електрику та зламуючи банки та енергетичні компанії. Україна змогла підвищити свою ефективність, але загроза залишається.

    Теми цього довгочиту:

    Війна

Коментарі (4)

Мега топ, поділився зі студентами

Вам також сподобається

  • Hello, RabbitMQ на PHP

    Реалізуємо найпростіший приклад взаємодії з брокером повідомлень за 10 хвилин.

    Теми цього довгочиту:

    Rabbitmq
  • Історія розвитку комп'ютерної техніки

    Історія розвитку комп'ютерної техніки відзначається безперервним прогресом від примітивних механічних обчислювальних пристроїв до складних електронних систем, що стали невід'ємною частиною сучасного життя.

    Теми цього довгочиту:

    Архітектура Еом
  • Кібервійна в Україні так само важлива, як і битва в окопах

    Українська та російська сторони ведуть кібервійну, спрямовану на викрадення даних та сіяння паніки. Російські атаки вже давали тривожний дзвінок, вимикаючи електрику та зламуючи банки та енергетичні компанії. Україна змогла підвищити свою ефективність, але загроза залишається.

    Теми цього довгочиту:

    Війна