Встречается на собеседованиях • сегодня
Что такое принцип открытости/закрытости (Open-Closed Principle)
Принцип открытости/закрытости (OCP) гласит: "Программные сущности должны быть открыты для расширения, но закрыты для модификации". Это означает, что мы должны проектировать код так, чтобы добавлять новую функциональность через расширение (наследование, композицию), а не изменяя существующий код.
Пример нарушения OCP:
javascript
class Rectangle {
constructor(width, height) {
this.width = width;
this.height = height;
}
}
class AreaCalculator {
calculate(shape) {
if (shape instanceof Rectangle) {
return shape.width * shape.height;
}
// При добавлении нового типа нужно модифицировать класс
}
}
text
Правильный подход:
```javascript
class Shape {
area() {
throw new Error('Method not implemented');
}
}
class Rectangle extends Shape {
constructor(width, height) {
super();
this.width = width;
this.height = height;
}
area() {
return this.width * this.height;
}
}
// Новый тип можно добавить без изменения AreaCalculator
class Circle extends Shape {
constructor(radius) {
super();
this.radius = radius;
}
area() {
return Math.PI * this.radius ** 2;
}
}
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы