Junior
Dê um exemplo de uso de uma fábrica abstrata
sobes.tech IA
Resposta da IA
A fábrica abstrata é um padrão de design creacional que fornece uma interface para criar famílias de objetos relacionados sem especificar suas classes concretas.
Exemplo em C#:
// Interfaces de produtos
public interface IButton {
void Render();
}
public interface ICheckbox {
void Render();
}
// Produtos concretos para Windows
public class WindowsButton : IButton {
public void Render() => Console.WriteLine("Renderizando botão Windows");
}
public class WindowsCheckbox : ICheckbox {
public void Render() => Console.WriteLine("Renderizando checkbox Windows");
}
// Produtos concretos para MacOS
public class MacButton : IButton {
public void Render() => Console.WriteLine("Renderizando botão MacOS");
}
public class MacCheckbox : ICheckbox {
public void Render() => Console.WriteLine("Renderizando checkbox MacOS");
}
// Fábrica abstrata
public interface IGUIFactory {
IButton CreateButton();
ICheckbox CreateCheckbox();
}
// Fábricas concretas
public class WindowsFactory : IGUIFactory {
public IButton CreateButton() => new WindowsButton();
public ICheckbox CreateCheckbox() => new WindowsCheckbox();
}
public class MacFactory : IGUIFactory {
public IButton CreateButton() => new MacButton();
public ICheckbox CreateCheckbox() => new MacCheckbox();
}
// Uso
class Application {
private IButton button;
private ICheckbox checkbox;
public Application(IGUIFactory factory) {
button = factory.CreateButton();
checkbox = factory.CreateCheckbox();
}
public void Render() {
button.Render();
checkbox.Render();
}
}
// No código cliente, escolhemos a fábrica necessária
IGUIFactory factory = new WindowsFactory();
Application app = new Application(factory);
app.Render();
Neste exemplo, a fábrica abstrata permite criar famílias de objetos relacionados (botões e caixas de seleção) para diferentes plataformas, sem depender das classes concretas dos produtos.