Ответ
Принцип открытости/закрытости (Open/Closed Principle) гласит, что классы должны быть открыты для расширения, но закрыты для модификации.
Пример:
interface Shape {
fun area(): Double
}
class Rectangle(val width: Double, val height: Double) : Shape {
override fun area() = width * height
}
class Circle(val radius: Double) : Shape {
override fun area() = Math.PI * radius * radius
}
fun totalArea(shapes: List<Shape>) = shapes.sumOf { it.area() }
Вместо изменения существующего кода при добавлении новой фигуры (например, Triangle), мы просто реализуем интерфейс Shape. Это делает код расширяемым без изменения уже работающей логики.