Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.05.2019, 22:47
Кандидат Javascript-наук
Отправить личное сообщение для zlodiak Посмотреть профиль Найти все сообщения от zlodiak
 
Регистрация: 24.02.2012
Сообщений: 104

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

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

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

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

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

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


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

в связи с этим мне непонятна область применения принципа. ведь невозможно же его всё время соблюдать. зачем же он тогда нужен вообще?
Ответить с цитированием
  #2 (permalink)  
Старый 30.05.2019, 11:58
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск