Junior
Oferiți un exemplu de utilizare a unei fabrici abstracte
sobes.tech AI
Răspuns de la AI
Fabrica abstractă este un pattern de creație care oferă o interfață pentru crearea familiilor de obiecte conexe fără a specifica clasele lor concrete.
Exemplu în C#:
// Interfețe de produse
public interface IButton {
void Render();
}
public interface ICheckbox {
void Render();
}
// Produse concrete pentru Windows
public class WindowsButton : IButton {
public void Render() => Console.WriteLine("Redare buton Windows");
}
public class WindowsCheckbox : ICheckbox {
public void Render() => Console.WriteLine("Redare casetă de selectare Windows");
}
// Produse concrete pentru MacOS
public class MacButton : IButton {
public void Render() => Console.WriteLine("Redare buton MacOS");
}
public class MacCheckbox : ICheckbox {
public void Render() => Console.WriteLine("Redare casetă de selectare MacOS");
}
// Fabrica abstractă
public interface IGUIFactory {
IButton CreateButton();
ICheckbox CreateCheckbox();
}
// Fabrica concretă
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();
}
// Utilizare
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();
}
}
// În codul client, alegem fabrica necesară
IGUIFactory factory = new WindowsFactory();
Application app = new Application(factory);
app.Render();
În acest exemplu, fabrica abstractă permite crearea familiilor de obiecte conexe (buton și casetă de selectare) pentru diferite platforme, fără a depinde de clasele concrete ale produselor.