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