Лабораторна робота №3. Репозиторії та сервіси
Тема: Створення репозиторієв та сервісів
Теоретичні відомості
Паттерн репозиторій (Repository Pattern) - це паттерн проектування, який використовується в розробці програмного забезпечення для відокремлення логіки доступу до даних від решти додатку. Він дозволяє абстрагувати роботу з базою даних або іншими джерелами даних, надаючи спеціалізований інтерфейс для взаємодії з цими джерелами.
Рисунок 1. Схема паттерну репозиторій
Основні поняття та компоненти паттерну репозиторій:
Репозиторій (Repository) - клас або інтерфейс, який надає методи для зберігання, отримання, оновлення та видалення об'єктів з бази даних або іншого джерела даних. Він приховує деталі роботи з базою даних від решти програми.
Модель (Model) - об'єкт, який представляє дані, що зберігаються в базі даних або іншому джерелі даних. Модель може мати відповідність (mapping) до таблиці бази даних або іншої структури даних.
Клієнтський код (Client Code) - решта додатку, який використовує репозиторій для взаємодії з даними. Клієнтський код викликає методи репозиторія, а не безпосередньо взаємодіє з базою даних.
Переваги використання паттерну репозиторій:
Розділення відповідальностей - паттерн репозиторій дозволяє відокремити логіку доступу до даних від бізнес-логіки програми. Це полегшує підтримку і рефакторинг.
Тестованість - оскільки клієнтський код взаємодіє з репозиторієм через інтерфейс, це дозволяє легко тестувати класи, що використовують репозиторій, за допомогою мокінгу або створення фейків.
Повторне використання - репозиторії можна використовувати в різних частинах програми і навіть в інших проектах, що сприяє повторному використанню коду.
Абстракція джерел даних - репозиторій може працювати з різними джерелами даних (наприклад, базою даних, веб-сервісами, файлами) і надавати єдиний інтерфейс для роботи з ними.
Підтримка розширення - зміна джерела даних або реалізації репозиторія може бути виконана без зміни клієнтського коду.
Зниження ризику помилок - за допомогою репозиторіїв зменшується ризик дублювання коду для доступу до даних та зменшується ймовірність помилок.
Паттерн є корисним у великих проектах і спрощує управління та розвиток додатків, особливо тих, що взаємодіють зі складними джерелами даних.
Завдання
- Виконати клонуванння та запуск проекту: https://github.com/lisnayk/modern-frameworks/tree/master/lab3-ex
- Проаналізувати схеми даних https://api.escuelajs.co/docs та документацю https://fakeapi.platzi.com/
- Ознайомитися з додатковими матеріалами та проаналізувати код з пункту 1.
- Використовуючи існуючий код:
- Створити шаблонні інтерфейси
Creatable
,Editable
,Deletable
. - Створити типи
Product
таUser
. - Створити класси
ProductService
таUserService
що імпліментують інтерфейси типів відповідно. - Імпліментувати методи інтерфейсів (
Readable
,Writable
,Editable
,Deletable
) для сервісів (репозиротіїв) Categories, Products та Users. - Оновити фабрику
ServiceProvider
та додати нові сервіси.
- Створити шаблонні інтерфейси
- Протестувати роботу сервісів та їх методів.
- Розмістити проект у системі контролю версій (github.com, bitbucket.org) з іменем ропозиторію mjsf-mag-lab3.
- Відправити посилання на репозиторій у якості звіту з виконаної роботи.
Додатковий матеріал:
- https://markus.oberlehner.net/blog/the-ioc-container-pattern-with-vue/
- https://medium.com/backenders-club/consuming-apis-using-the-repository-pattern-in-vue-js-e64671b27b09
- https://itnext.io/building-vue-enterprise-application-part-3-the-store-dbda0e4bb117
Контрольні питання
- Що таке паттерн репозиторій і для чого він використовується в розробці програмного забезпечення?
- Які компоненти включаються в реалізацію паттерну репозиторій?
- Яка роль моделі в паттерні репозиторій?
- Як паттерн репозиторій допомагає відокремити логіку доступу до даних від бізнес-логіки додатку?
- Як паттерн репозиторій сприяє тестованості програми?
- Які переваги надає використання паттерну репозиторій?