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

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


Визначення

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

Розділення

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

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

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

Репозиторій

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

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

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

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

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

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

Висновки

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


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

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

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

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

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

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

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

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

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

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

    Js

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

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

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

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