Встречается на собеседованиях • сегодня
Приведи пример использования Liskov Substitution Principle
LSP гласит, что подтипы должны быть заменяемыми для своих базовых типов. В Node.js это означает, что дочерние классы должны корректно работать там, где ожидается родительский класс.
Пример нарушения:
javascript
class Rectangle {
constructor(width, height) {
this.width = width;
this.height = height;
}
setWidth(width) { this.width = width; }
setHeight(height) { this.height = height; }
}
class Square extends Rectangle {
setWidth(width) {
this.width = width;
this.height = width; // Нарушение LSP - изменяет и высоту
}
setHeight(height) {
this.height = height;
this.width = height; // Нарушение LSP - изменяет и ширину
}
}
function testRectangle(rectangle) {
rectangle.setWidth(5);
rectangle.setHeight(4);
console.assert(rectangle.width * rectangle.height === 20); // Упадет для Square
}
text
Исправленный вариант - не наследовать Square от Rectangle, а создать общий интерфейс:
```javascript
class Shape {
area() { throw new Error('Not implemented'); }
}
class Rectangle extends Shape {
// ...
}
class Square extends Shape {
// ...
}
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы