Що таке принцип відкритості-закритості (OCP)?
javascript
// Погано: Модифікація існуючого коду для нових фігур
class AreaCalculator {
calculate(shape) {
if (shape.type === "circle") {
return Math.PI * shape.radius ** 2;
} else if (shape.type === "square") {
return shape.side ** 2;
}
// Додати трикутник? Треба змінювати цю функцію!
}
}
// Добре: Відкритий для розширення
class Shape {
area() {
throw new Error("Треба реалізувати");
}
}
class Circle extends Shape {
constructor(radius) {
super();
this.radius = radius;
}
area() {
return Math.PI * this.radius ** 2;
}
}
// Можна додати Triangle без модифікації існуючого коду!Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.