Sobes.tech
Junior

Abstrakt fabrikadan foydalanish misolini keltiring

sobes.tech AI

AIdan javob

Abstrakt fabrika — bu yaratish uchun mo'ljallangan dizayn namunasi bo'lib, u bog'liq obyektlar oilasini yaratish uchun interfeys taqdim etadi va ularning aniq sinflarini ko'rsatmaydi.

C# misoli:

// Mahsulot interfeyslari
public interface IButton {
    void Render();
}

public interface ICheckbox {
    void Render();
}

// Windows uchun konkret mahsulotlar
public class WindowsButton : IButton {
    public void Render() => Console.WriteLine("Windows tugmasi chizilmoqda");
}

public class WindowsCheckbox : ICheckbox {
    public void Render() => Console.WriteLine("Windows belgilash katakchasi chizilmoqda");
}

// MacOS uchun konkret mahsulotlar
public class MacButton : IButton {
    public void Render() => Console.WriteLine("MacOS tugmasi chizilmoqda");
}

public class MacCheckbox : ICheckbox {
    public void Render() => Console.WriteLine("MacOS belgilash katakchasi chizilmoqda");
}

// Abstrakt fabrika
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();
}

// Foydalanish
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();
    }
}

// Mijoz kodida kerakli fabrika tanlanadi
IGUIFactory factory = new WindowsFactory();
Application app = new Application(factory);
app.Render();

Ushbu misolda, abstrakt fabrika turli platformalar uchun bog'liq obyektlar oilasini (tugmalar va belgilash katakchalari) yaratishga imkon beradi va mahsulotlarning konkret sinflariga bog'liq emas.