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.