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

Эльдар Бабаев

Внутри функции явно проверяется тип, а это значит, что поведение определяется не типом, а сама функция решает как себя вести.

Как-то эта фраза не вяжется с итоговым решением упражнения.

Понадобится добавить новый интерфейс в виде методов isUser и isGuest.

Если будет больше ролей, то на первый взгляд у нас сразу появляются флаги для сущности. В каждом классе писать методы на каждую роль? Мне кажется это не самый удачный пример.

И хотя кода меньше не стало, всё же это полиморфизм подтипов. Код завязан на методы, а не на типы. Изменение структуры классов не коснётся этой функции, если сама логика останется той же.

Как только там будет роль + еще какое-то состояние, то всё. Тоска печаль с этими флаговыми методами.

2 0

Максим

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

0

Kirill Mokevnin

Конечно нужно не забывать, тут выбора нет. В статическом языке это заставил бы сделать компилятор. Главное что мы теперь завязаны на интерфейс, а не на название типа. При таком подходе вам достаточно реализовать новый метод и все. Места где он используется останется не тронутым. При завязке на имя класса придется поправить ВСЕ места где есть такая проверка.

0

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

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

Отправляя форму, вы соглашаетесь 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 месяцев