Заглушка сервісу () — шаблон проєктування, який дозволяє позбутись залежностей від зовнішніх компонентів.
Опис
Часто система залежить від зовнішніх сервісів. Зовнішні сервіси можуть створювати неочікувані проблеми, їх не можна контролювати та підтримувати. Ненадійність зовнішніх ресурсів викликає проблеми в самій аплікації. При цьому розробка уповільнюється також через неможливість тестувати логіку аплікації.
Рішенням буде робити залежність не на зовнішній сервіс, а на абстракцію. А при потребі (у разі несправності сервісу, чи тестуванні) використовувати заглушку, цього сервісу, яка виконується локально.
Реалізація
Нехай, наша аплікація містить операції із конвертуванням грошей. Тоді нам необхідний сервіс, який повертатиме курс валют на цю мить. Представимо таку залежність у вигляді абстракцію.
Тоді реалізуємо інтерфейси використовуючи необхідний сервіс.
Та щоб уникнути залежності на зовнішній ресурс, напишемо заглушку, яку будемо використовувати при тестах.
Зв'язок з іншими патернами
Макет об'єкта та заглушка сервісу часто плутають. Та варто розуміти, що макет об'єкта використовуються для імітації поведінки однієї чи декількох функцій та залежно від умов ця імітація може відрізнятись в той час, як заглушка сервісу замінює цілий сервіс та його реалізація залишається незмінною.
Див. також Макет об'єкта
Джерела Service Stub