1. Ухудшение структуры кода при наследовании реализаций.
При неограниченном наследовании реализаций структура кода "размягчается". Возникают странные иерархии классов, не соответсвующие архитектуре, а существующие только чтобы что-нибудь "перекрыть" с не менее странными классами если взглянуть отстранённо. Лезут анипаттерны вроде "Паблик Морозов".
2. Неадекватное повышения связанности ООП кода.
Так как полиморфизм обеспечивается механизмом виртуальных методов, то для каждого места, где нужно полиморфное поведение, необходимо завести абстрактный базовый метод. В резльтате базовый класс полнится заголовками методов, существование которых оправдано только кодом "где-то там", а реализации либо превращаются в год-классы либо обрастают монструозной архитектурой, иногда даже с депенденси инжекшеном.
Две проблемы не раскрыто.
1. Ухудшение структуры кода при наследовании реализаций.
При неограниченном наследовании реализаций структура кода "размягчается". Возникают странные иерархии классов, не соответсвующие архитектуре, а существующие только чтобы что-нибудь "перекрыть" с не менее странными классами если взглянуть отстранённо. Лезут анипаттерны вроде "Паблик Морозов".
2. Неадекватное повышения связанности ООП кода.
Так как полиморфизм обеспечивается механизмом виртуальных методов, то для каждого места, где нужно полиморфное поведение, необходимо завести абстрактный базовый метод. В резльтате базовый класс полнится заголовками методов, существование которых оправдано только кодом "где-то там", а реализации либо превращаются в год-классы либо обрастают монструозной архитектурой, иногда даже с депенденси инжекшеном.