Без какого принципа ООП нельзя реализовать абстрактную фабрику

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

Ответ

Без полиморфизма реализация абстрактной фабрики невозможна. Абстрактная фабрика предполагает создание семейств связанных объектов через интерфейсы, а не конкретные классы. Полиморфизм позволяет работать с разными реализациями через общий интерфейс.

Пример:

interface Button { fun render() }
interface Checkbox { fun check() }

class AndroidButton : Button {
    override fun render() = println("Android Button")
}
class AndroidCheckbox : Checkbox {
    override fun check() = println("Android Checkbox")
}

interface GUIFactory {
    fun createButton(): Button
    fun createCheckbox(): Checkbox
}

class AndroidFactory : GUIFactory {
    override fun createButton() = AndroidButton()
    override fun createCheckbox() = AndroidCheckbox()
}

Здесь GUIFactory использует полиморфизм, возвращая интерфейсы, а конкретные фабрики (AndroidFactory) реализуют их.