Junior
Uveďte príklad použitia abstraktnej továrne
sobes.tech AI
Odpoveď od AI
Abstraktná továreň je tvorivý vzor, ktorý poskytuje rozhranie na vytváranie rodín súvisiacich objektov bez špecifikácie ich konkrétnych tried.
Príklad v C#:
// Rozhrania produktov
public interface IButton {
void Render();
}
public interface ICheckbox {
void Render();
}
// Konkrétne produkty pre Windows
public class WindowsButton : IButton {
public void Render() => Console.WriteLine("Vykresľovanie tlačidla Windows");
}
public class WindowsCheckbox : ICheckbox {
public void Render() => Console.WriteLine("Vykresľovanie zaškrtávacieho políčka Windows");
}
// Konkrétne produkty pre MacOS
public class MacButton : IButton {
public void Render() => Console.WriteLine("Vykresľovanie tlačidla MacOS");
}
public class MacCheckbox : ICheckbox {
public void Render() => Console.WriteLine("Vykresľovanie zaškrtávacieho políčka MacOS");
}
// Abstraktná továreň
public interface IGUIFactory {
IButton CreateButton();
ICheckbox CreateCheckbox();
}
// Konkrétne továrne
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žitie
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 klientskom kóde vyberáme potrebnú továreň
IGUIFactory factory = new WindowsFactory();
Application app = new Application(factory);
app.Render();
V tomto príklade abstraktná továreň umožňuje vytváranie rodín súvisiacich objektov (tlačidiel a zaškrtávacích políčok) pre rôzne platformy, bez závislosti od konkrétnych tried produktov.