Junior
Geben Sie ein Beispiel für die Verwendung einer abstrakten Fabrik
sobes.tech KI
Antwort von AI
Die abstrakte Fabrik ist ein creational Pattern, das eine Schnittstelle bereitstellt, um Familien verwandter Objekte zu erstellen, ohne ihre konkreten Klassen anzugeben.
Beispiel in C#:
// Produkt-Interfaces
public interface IButton {
void Render();
}
public interface ICheckbox {
void Render();
}
// Konkrete Produkte für Windows
public class WindowsButton : IButton {
public void Render() => Console.WriteLine("Windows-Button rendern");
}
public class WindowsCheckbox : ICheckbox {
public void Render() => Console.WriteLine("Windows-Checkbox rendern");
}
// Konkrete Produkte für MacOS
public class MacButton : IButton {
public void Render() => Console.WriteLine("MacOS-Button rendern");
}
public class MacCheckbox : ICheckbox {
public void Render() => Console.WriteLine("MacOS-Checkbox rendern");
}
// Abstrakte Fabrik
public interface IGUIFactory {
IButton CreateButton();
ICheckbox CreateCheckbox();
}
// Konkrete Fabriken
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();
}
// Verwendung
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();
}
}
// Im Client-Code wählen wir die benötigte Fabrik
IGUIFactory factory = new WindowsFactory();
Application app = new Application(factory);
app.Render();
In diesem Beispiel ermöglicht die abstrakte Fabrik die Erstellung von Familien verwandter Objekte (Schaltflächen und Kontrollkästchen) für verschiedene Plattformen, ohne von den konkreten Klassen der Produkte abhängig zu sein.