Информация об изменениях

Сообщение Re[13]: Язык Go - слабые стороны от 18.02.2022 14:47

Изменено 18.02.2022 14:54 Pauel

Re[13]: Язык Go - слабые стороны
Здравствуйте, Hobbes, Вы писали:

H>Я в последнее время придерживаюсь точки зрения, что наследование должно было Интерфейс — [0..N] Абстрактных классов — Имплементация. Если родительский класс не абстрактный, то поведение наследника должно чем-то отличаться от поведения родителя, иначе не нужно было бы существование наследника. А полиморфизм, при котором поведение наследника отличается от поведения родителя, я считаю антипаттерном.


У тебя здесь противоречие
1. ты заявляешь, что должен быть интерфей-абстрактыйкласс-реализация. Ни для чего больше не нужно заводить этот интерфейс, кроме как абстрагирование. И с абстрактным классом ровно то же.
2. Ты утверждаешь, что поведение наследника должно чем отличаться родительского
3. при этом, если поведение наследника отличается от поведения родителя у тебя это антипаттерн

Зачем тогда огород городить?

Итого — п1 это уже заявка на полиморфизм, т.к. через один интерфейс сможем работать сразу со всеми наследниками. А в п3 выясняем, что это антипаттерн

Собственно, наследование и полиморфизм это две стороны одной монеты. Все это само по себе не нужно. А цель этих приседаний — обеспечение абстракции. При помощи наследования конструируем, при помощи полиморфизма используем. Но цель — абстракция.
Re[13]: Язык Go - слабые стороны
Здравствуйте, Hobbes, Вы писали:

H>Я в последнее время придерживаюсь точки зрения, что наследование должно было Интерфейс — [0..N] Абстрактных классов — Имплементация. Если родительский класс не абстрактный, то поведение наследника должно чем-то отличаться от поведения родителя, иначе не нужно было бы существование наследника. А полиморфизм, при котором поведение наследника отличается от поведения родителя, я считаю антипаттерном.


У тебя здесь противоречие
1. ты заявляешь, что должен быть интерфейc-абстрактыйкласс-реализация. Ни для чего больше не нужно заводить этот интерфейс, кроме как абстрагирование. И с абстрактным классом ровно то же.
2. Ты утверждаешь, что поведение наследника должно чем отличаться родительского
3. при этом, если поведение наследника отличается от поведения родителя у тебя это антипаттерн

Зачем тогда огород городить?

Итого — п1 это уже заявка на полиморфизм, т.к. через один интерфейс сможем работать сразу со всеми наследниками. А в п3 выясняем, что это антипаттерн

Собственно, наследование и полиморфизм это две стороны одной монеты. Все это само по себе не нужно. А цель этих приседаний — обеспечение абстракции. При помощи наследования конструируем новую разновидность, при помощи полиморфизма вызываем. Но цель — абстракция.