Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   можно ли нарушать принцип подстановки Лисков? (https://javascript.ru/forum/misc/77635-mozhno-li-narushat-princip-podstanovki-liskov.html)

zlodiak 29.05.2019 22:47

можно ли нарушать принцип подстановки Лисков?
 
помогите пожалуйста разобраться

есть код, в котором классы-потребители Customer и FatCustomer связаны наследованием. Этот код не нарушает принцип подстановки барбары лисков: https://jsfiddle.net/zlodiak/xptgj9dq/

а есть такой код, в котором классы-потребители не связаны наследованием. он тоже соответствует принципу подстановки барбары лисков: https://jsfiddle.net/zlodiak/7wgejos3/

если во втором примере я сделаю так чтобы Batman съедал 3 пиццы вместо одной, то код перестанет соответствовать принципу подстановки барбары лисков:
class Batman {
    .....
    ...

    eat() {
        this.storage.minus(3);
    }

    ....
    ........
}


в этом случае код станет плохим потому что не соответствует принципу лисков? но если мне именно это и нужно было - чтобы Batman съедал 3 пиццы. получается, что я в этом случае пишу некачественный код?

в связи с этим мне непонятна область применения принципа. ведь невозможно же его всё время соблюдать. зачем же он тогда нужен вообще?

Malleys 30.05.2019 11:58

Цитата:

Сообщение от zlodiak
если во втором примере я сделаю так чтобы Batman съедал 3 пиццы вместо одной, то код перестанет соответствовать принципу подстановки барбары лисков

Почему вы решили, что он перестаёт соответствовать? Вы ведь можете представителя Batman заменить на представителя Customer и он по прежнему будет кушать пиццу.

Вам нужно проверять количество пиццы в хранилище, а то это бесконечная пицца!


Часовой пояс GMT +3, время: 04:12.