Sobes.tech
Junior — Middle

Можете ли да обясните концепцията за абстрактна фабрика и нейното предназначение в шаблоните за дизайн?

sobes.tech AI

Отговор от AI

Абстрактната фабрика е създаващ шаблон за дизайн, който предоставя интерфейс за създаване на семейства от свързани или зависими обекти без да се посочват конкретните им класове.

Целта на шаблона е да осигури създаването на обекти, които трябва да работят заедно, като скрива детайлите на тяхната конкретна реализация. Това е полезно, когато системата трябва да бъде независима от начина, по който се създават, съставят и представят продуктите.

Пример: в iOS приложение може да се използва абстрактна фабрика за създаване на UI компоненти, които изглеждат различно на iOS и macOS, но имат един и същ интерфейс.

protocol Button {
    func render()
}

class iOSButton: Button {
    func render() {
        print("Рендиране на бутон в стил iOS")
    }
}

class MacOSButton: Button {
    func render() {
        print("Рендиране на бутон в стил macOS")
    }
}

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() // Рендиране на бутон в стил iOS