Друкарня від WE.UA

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

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


Визначення

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

Розділення

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

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

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

Репозиторій

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

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

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

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

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

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

Висновки

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


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

Статті про вітчизняний бізнес та цікавих людей:

  • Як побудована програма Meest China Academy

    Курс про товарний бізнес охоплює різні етапи роботи: від пошуку ідеї до перевірки товару, логістики та масштабування. Програма Meest China Academy містить 17 модулів, які послідовно розкривають ці теми без зведення всього навчання до однієї універсальної поради.

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

    Meest
  • Які технології використані в Айфон 17

    Айфон 17 поєднує OLED-дисплей із частотою до 120 Гц, чип A19, дві камери Fusion 48 Мп і швидке заряджання через USB-C. У COMFY можна купити Айфон 17 з накопичувачем на 256 або 512 ГБ, вибравши конфігурацію відповідно до обсягу фото, відео та застосунків

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

    Iphone 17
  • Як вибрати вживаний iPhone: коротке керівництво для розумної покупки

    Вторинний ринок смартфонів Apple активно зростає, і питання, як вибрати вживаний iPhone, стає актуальним для дедалі більшої кількості користувачів. Правильний підхід дозволяє отримати бу iPhone з актуальною iOS і доброю камерою за помітно нижчу ціну, ніж у нових пристроїв.

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

    Iphone
  • Як подолати жіночу безплідність за допомогою донорських яйцеклітин

    Діагноз "безпліддя" рідко звучить як вирок одразу. Для багатьох жінок саме в цей момент вперше звучить словосполучення "донорські яйцеклітини" — і це часто не кінець шляху до материнства, а якраз новий, реальний шанс.

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

    Донорство
  • Як заспокоїти зубний біль і чому самолікування може призвести до операції?

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

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

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

5Довгочити
796Перегляди
17Підписники
На Друкарні з 15 квітня 2023

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

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

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

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

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

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

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

    Js

Це також може зацікавити:

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

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

Це також може зацікавити: