makarychev13, абстрактные классы нужны, чтобы можно было создать более 1го варианта реализации, с разным поведением, иначе зачем дублировать функционал, так? Но оставим их в стороне.
Вот тут:
если есть класс В : А, в котором есть override, то при сигнатуре метода Foo(B bar), это не будет полиморфизмом
я не уловил суть кейза. Можете объяснить с примером кода?
Пример:
Базовый класс, реализует метод MakeReport(). Метод возвращает html с отчетом в виде таблицы. UnitTest ожидает и проверяет наличие определенных тегов в тексте.
Появилось требование - изменить формат некоторых отчетов на CSV. Согласно OCP создаем наследника, который перекрывает MakeReport() новым методом (полиморфизм).
Внезапно - UnitTest для наследника не проходит.
LSP нарушен?
Да, наверное в моем случае более подходящим решением будет использование сервиса. Ajax запросы тоже можно, но для этого случая не очень мне нравятся, т.к. усложняют решение.
Спасибо за подсказку.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Вот тут: я не уловил суть кейза. Можете объяснить с примером кода?