Junior
Geef een voorbeeld van het gebruik van een abstracte fabriek
sobes.tech AI
Antwoord van AI
De abstracte fabriek is een creational pattern dat een interface biedt voor het maken van families van gerelateerde objecten zonder hun concrete klassen te specificeren.
Voorbeeld in C#:
// Product interfaces
public interface IButton {
void Render();
}
public interface ICheckbox {
void Render();
}
// Concrete producten voor Windows
public class WindowsButton : IButton {
public void Render() => Console.WriteLine("Windows knop renderen");
}
public class WindowsCheckbox : ICheckbox {
public void Render() => Console.WriteLine("Windows selectievakje renderen");
}
// Concrete producten voor MacOS
public class MacButton : IButton {
public void Render() => Console.WriteLine("MacOS knop renderen");
}
public class MacCheckbox : ICheckbox {
public void Render() => Console.WriteLine("MacOS selectievakje renderen");
}
// Abstracte fabriek
public interface IGUIFactory {
IButton CreateButton();
ICheckbox CreateCheckbox();
}
// Concrete factories
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();
}
// Gebruik
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();
}
}
// In de clientcode kiezen we de benodigde fabriek
IGUIFactory factory = new WindowsFactory();
Application app = new Application(factory);
app.Render();
In dit voorbeeld maakt de abstracte fabriek families van gerelateerde objecten (knoppen en selectievakjes) voor verschillende platforms, zonder afhankelijk te zijn van de concrete klassen van de producten.