Sobes.tech
Junior

Soyut fabrika kullanımına bir örnek veriniz

sobes.tech yapay zeka

AI'dan gelen yanıt

Soyut fabrika, ilişkili nesfeleri oluşturan arayüz sağlayan ve belirli sınıflarını belirtmeden nesfeleri oluşturan bir yaratıcı tasarım desenidir.

C# örneği:

// Ürün arayüzleri
public interface IButton {
    void Render();
}

public interface ICheckbox {
    void Render();
}

// Windows için somut ürünler
public class WindowsButton : IButton {
    public void Render() => Console.WriteLine("Windows düğmesi çiziliyor");
}

public class WindowsCheckbox : ICheckbox {
    public void Render() => Console.WriteLine("Windows onay kutusu çiziliyor");
}

// MacOS için somut ürünler
public class MacButton : IButton {
    public void Render() => Console.WriteLine("MacOS düğmesi çiziliyor");
}

public class MacCheckbox : ICheckbox {
    public void Render() => Console.WriteLine("MacOS onay kutusu çiziliyor");
}

// Soyut fabrika
public interface IGUIFactory {
    IButton CreateButton();
    ICheckbox CreateCheckbox();
}

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

// Kullanım
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üşteri kodunda gerekli fabrika seçilir
IGUIFactory factory = new WindowsFactory();
Application app = new Application(factory);
app.Render();

Bu örnekte, soyut fabrika farklı platformlar için ilişkili nesne aileleri (düğmeler ve onay kutuları) oluşturmaya olanak tanır ve ürünlerin somut sınıflarına bağlı değildir.