Sobes.tech
Junior — Middle

Pode explicar o conceito de fábrica abstrata e o seu propósito nos padrões de projeto?

sobes.tech IA

Resposta da IA

A fábrica abstrata é um padrão de design criacional que fornece uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas.

O objetivo do padrão é garantir a criação de objetos que devem trabalhar juntos, ocultando os detalhes de sua implementação concreta. Isso é útil quando o sistema deve ser independente do modo como os produtos são criados, compostos e apresentados.

Exemplo: numa aplicação iOS, pode-se usar uma fábrica abstrata para criar componentes de UI que parecem diferentes no iOS e no macOS, mas têm a mesma interface.

protocol Button {
    func render()
}

class iOSButton: Button {
    func render() {
        print("Renderizar botão estilo iOS")
    }
}

class MacOSButton: Button {
    func render() {
        print("Renderizar botão estilo macOS")
    }
}

protocol UIFactory {
    func createButton() -> Button
}

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

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

// Uso
let factory: UIFactory = iOSFactory()
let button = factory.createButton()
button.render() // Renderizar botão estilo iOS