Junior
Abstrakt fabrikadan istifadə nümunəsi verin
sobes.tech Süni İntellekt
AI-dan cavab
Abstrakt fabrika — əlaqəli obyektlər ailəsini yaratmaq üçün interfeys təmin edən və onların konkret sinflərini göstərmədən istifadə olunan yaradıcı dizayn nümunəsidir.
C# nümunəsi:
// Məhsul interfeysləri
public interface IButton {
void Render();
}
public interface ICheckbox {
void Render();
}
// Windows üçün konkret məhsullar
public class WindowsButton : IButton {
public void Render() => Console.WriteLine("Windows düyməsi çəkilir");
}
public class WindowsCheckbox : ICheckbox {
public void Render() => Console.WriteLine("Windows seçim qutusu çəkilir");
}
// MacOS üçün konkret məhsullar
public class MacButton : IButton {
public void Render() => Console.WriteLine("MacOS düyməsi çəkilir");
}
public class MacCheckbox : ICheckbox {
public void Render() => Console.WriteLine("MacOS seçim qutusu çəkilir");
}
// Abstrakt fabriki
public interface IGUIFactory {
IButton CreateButton();
ICheckbox CreateCheckbox();
}
// Konkret fabrikalar
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();
}
// İstifadə
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();
}
}
// Müştəri kodunda lazım olan fabrikanı seçirik
IGUIFactory factory = new WindowsFactory();
Application app = new Application(factory);
app.Render();
Bu nümunədə, abstrakt fabrika müxtəlif platformalar üçün əlaqəli obyektlər ailəsini (düymələr və seçim qutuları) yaratmağa imkan verir və məhsulun konkret sinflərinə bağlı deyil.