Тестове завдання на позицію Junior Frontend Developer
Контекст
Ви працюєте на проєкті де є наступний код:
class Order {}
class PaymentProcessor {
pay(order) {
// Pre-processing.
this.#payWithVisa(order)
// Post-processing.
}
#payWithVisa(order) {
// Makes payment.
}
}
З прикладу коду прибрана вся логіка яка не стосується суті задачі.
Головне, що нас цікавить:
- Існує клас PaymentProcessor, за допомогою якого проводяться оплати.
- В методі pay()
- спочатку відбувається якийсь препроцесінг (валідація, розрахунок податку тощо).
- виклик приватного методу payWithVisa(), у якому і відбувається процес оплати.
- після оплату відбувається постпроцессинг (обробка помилок, тощо).
Для простоти припустимо, що вся логіка оплати знаходиться на бекенді.
Задача
До вас приходить Product Owner і просить додати ще два методи оплати paypal та x-payment.
- Як зміниться код классу PaymentProcessor (приведіть схематичну реалізацію)?
- Чому обрали саме таке рішення? Які у нього є плюси та мінуси?