Вопрос №53818 от пользователя dosart в уроке «Код, который убивает полиморфизм», курс «JS: Полиморфизм»

dosart

По-моему, пример с функцией sayHiByEmail неудачный. Да, объект EmailSender подменить не получиться. Но нужно ли это? Функция отправляет данные по email. Она не называется sayHi. Кажется, что всё в порядке.

4 0

Сергей Мелодин

dosart, полифморфизм делается не ради полифморфизма. Вы не сможете просто подменить emailSender при тестировании и отладке. При появлении большого количества функций sayHiBy...придётся их все именовать своим именем. В случае с sayHi мы можем создать интерфейс и просто сказать, что любой класс приветствия должен этот интерфейс имплементировать.

0

dosart

Вы не сможете просто подменить emailSender при тестировании и отладке

А зачем его подменять?

В случае с sayHi мы можем создать интерфейс и просто сказать, что любой класс приветствия должен этот интерфейс имплементировать

Я с вами согласен. Но у вас нет большого кол-ва функций. У вас одна функция. И непонятно зачем нужно уметь подменять объект EmailSender.

0

Сергей Мелодин

dosart, чаще всего сервисы нужно подменять, например, мы в тестах точно не хотим побочных эффектов и иногда проще подменить сервис, чем его замокать.

0

dosart

dosart, чаще всего сервисы нужно подменять, например, мы в тестах точно не хотим побочных эффектов и иногда проще подменить сервис

Сергей Мелодин, теперь понятно. Спасибо за ответ.

1

Есть вопрос или хотите участвовать в обсуждении?

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг»

Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
27 октября 8 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
27 октября 8 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
27 октября 8 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
27 октября 8 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
27 октября 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
Новый
Создает веб-приложения со скоростью света
27 октября 5 месяцев