Можешь привести пример использования принципа O в SOLID

«Можешь привести пример использования принципа O в SOLID» — вопрос из категории ООП, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Принцип открытости/закрытости (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. Это делает код расширяемым без изменения уже работающей логики.