Sobes.tech
Back to questions
Junior — Middle
74

Можете объяснить концепцию абстрактной фабрики и её назначение в паттернах проектирования?

Companies where asked
Мидлэнд
Леди и джентельмен сити

Answer from AI

sobes.tech AI

Абстрактная фабрика — это порождающий паттерн проектирования, который предоставляет интерфейс для создания семейств взаимосвязанных или взаимозависимых объектов без указания их конкретных классов.

Назначение паттерна — обеспечить создание объектов, которые должны работать вместе, скрывая детали их конкретной реализации. Это удобно, когда система должна быть независимой от способа создания, композиции и представления продуктов.

Пример: в iOS приложении можно использовать абстрактную фабрику для создания UI-компонентов, которые выглядят по-разному на iOS и macOS, но имеют одинаковый интерфейс.

protocol Button {
    func render()
}

class iOSButton: Button {
    func render() {
        print("Render iOS style button")
    }
}

class MacOSButton: Button {
    func render() {
        print("Render macOS style button")
    }
}

protocol UIFactory {
    func createButton() -> Button
}

class iOSFactory: UIFactory {
    func createButton() -> Button {
        return iOSButton()
    }
}

class MacOSFactory: UIFactory {
    func createButton() -> Button {
        return MacOSButton()
    }
}

// Использование
let factory: UIFactory = iOSFactory()
let button = factory.createButton()
button.render() // Render iOS style button