Junior
Uveďte příklad použití abstraktní továrny
sobes.tech AI
Odpověď od AI
Abstraktní továrna je návrhový vzor, který poskytuje rozhraní pro vytváření rodin souvisejících objektů bez specifikace jejich konkrétních tříd.
Příklad v C#:
// Rozhraní produktů
public interface IButton {
void Render();
}
public interface ICheckbox {
void Render();
}
// Konkrétní produkty pro Windows
public class WindowsButton : IButton {
public void Render() => Console.WriteLine("Vykreslení tlačítka Windows");
}
public class WindowsCheckbox : ICheckbox {
public void Render() => Console.WriteLine("Vykreslení zaškrtávacího políčka Windows");
}
// Konkrétní produkty pro MacOS
public class MacButton : IButton {
public void Render() => Console.WriteLine("Vykreslení tlačítka MacOS");
}
public class MacCheckbox : ICheckbox {
public void Render() => Console.WriteLine("Vykreslení zaškrtávacího políčka MacOS");
}
// Abstraktní továrna
public interface IGUIFactory {
IButton CreateButton();
ICheckbox CreateCheckbox();
}
// Konkrétní továrny
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();
}
// Použití
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();
}
}
// V klientském kódu vybíráme potřebnou továrnu
IGUIFactory factory = new WindowsFactory();
Application app = new Application(factory);
app.Render();
V tomto příkladu abstraktní továrna umožňuje vytvářet rodiny souvisejících objektů (tlačítek a zaškrtávacích políček) pro různé platformy, aniž by závisela na konkrétních třídách produktů.