• SOLID.LSP + ООП.Полиморфизм = противоречиe?

    @Mercury13
    Программист на «си с крестами» и не только
    LSP предписывает наследникам сохранять поведение (контракт) базового класса.

    Не поведение, а ограничения. LSP разрешает только усиливать требования к себе, и только ослаблять — требования к другим. Поведение же может меняться как хочешь в рамках этих ограничений.

    Например, интерфейс Stream позволяет мультиплексированные потоки (то есть потоки, где мы не можем считать записанное, чтение и запись идёт по разным каналам и никак не связаны друг с другом — например, COM-порты), а какой-нибудь BufferedStream ограничивается только потоками, где мы пишем в какую-нибудь цепочку байтов (например, файл), и читаем из неё же, без мультиплексирования.
    Ответ написан
    2 комментария