IRONSOFTWAREHOME
GELIŞTIRICI GÜNCELLEMELERI

Fabrika Tasarımı C# (Geliştiriciler İçin Nasıl Çalışır)

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Jacob Mellor
Updated: 23 Nisan 2026

C#'ta Fabrika Deseni, tasarım desenleri kategorisine ait olan yapısal bir yaklaşımdır. C# dilindeki Fabrika Metodu Tasarım Deseni, oluşturulacak nesnenin tam yaratıcı sınıfını belirtmeden nesneleri oluşturma ile ilgili sorunları çözmeyi amaçlar.

Özünde, fabrika deseni, nesne oluşturma işlemini belirli bir sınıfa devrederek ilgilenir, bu sınıf fabrika sınıfı olarak bilinir. Bu, özellikle yeni tür nesnelerin tanıtılması söz konusu olduğunda, bir sistemin daha esnek ve daha yönetilebilir olmasını sağlar, çünkü fabrika sınıfı, nesne oluşturma sürecini yönetir, somut sınıflara olan bağımlılığı azaltır. C# dilindeki bir yaratıcı tasarım deseni olan Fabrika Metodu Deseninin nasıl uygulanıp kullanılabileceğine dikkat edelim. IronPDF PDF Oluşturma Kütüphanesini daha sonra keşfedeceğiz.

Temel Fabrika Metodu Deseni Yapısı

Fabrika metodu deseninin ardındaki temel fikir, nesneleri oluşturmak için ortak bir arayüz tanımlarken, alt sınıfların oluşturdukları nesnelerin türünü değiştirmesine izin vermektir. Bu desen bazı ana bileşenleri içerir:

  • Ürün Arayüzü: Fabrika metodu tarafından oluşturulan nesnelerin yapısını belirtir.
  • Somut Ürün Sınıfları: Ürün arayüzünü uygular.
  • Yaratıcı Sınıf (Soyut Yaratıcı Sınıf): Ürün arayüzüne ait bir nesne döndüren fabrika metodunu beyan eder.
  • Somut Yaratıcı: Fabrika metodunu somut ürünün bir örneğini teslim edecek şekilde değiştirilir.

Örnek: Araç Fabrikası

Arabalar ve kamyonlar gibi farklı araç türlerinin olduğu bir senaryo düşünün. Fabrika desenini kullanarak, kullanıcı girişi veya yapılandırma dosyasına dayalı olarak farklı türde araçlar üretebilen bir araç fabrikası oluşturacağız.

Adım 1: Ürün Arayüzünü Tanımlayın

public interface IVehicle
{
    // Method to display information about the vehicle
    void DisplayInfo();
}

Adım 2: Somut Ürünleri Uygulayın

public class Car : IVehicle
{
    // Displays Car specific information
    public void DisplayInfo()
    {
        Console.WriteLine("This is a Car.");
    }
}

public class Truck : IVehicle
{
    // Displays Truck specific information
    public void DisplayInfo()
    {
        Console.WriteLine("This is a Truck.");
    }
}

Adım 3: Soyut Yaratıcı Sınıfı Oluşturun

public abstract class VehicleFactory
{
    // Factory Method to create a vehicle instance
    public abstract IVehicle CreateVehicle(string type);
}

Adım 4: Somut Yaratıcıyı Uygulayın

public class ConcreteVehicleFactory : VehicleFactory
{
    public override IVehicle CreateVehicle(string type)
    {
        // Create vehicle based on type
        switch (type.ToLower())
        {
            case "car": return new Car();
            case "truck": return new Truck();
            default: throw new ArgumentException("Invalid vehicle type");
        }
    }
}

Adım 5: Müşteri Kodu Kullanımı

class Program
{
    static void Main(string[] args)
    {
        // Create factory instance
        VehicleFactory factory = new ConcreteVehicleFactory();

        // Create a Car and display its info
        IVehicle car = factory.CreateVehicle("car");
        car.DisplayInfo();

        // Create a Truck and display its info
        IVehicle truck = factory.CreateVehicle("truck");
        truck.DisplayInfo();
    }
}

Yukarıdaki örnekte, VehicleFactory sınıfı soyut yaratıcı olarak hizmet ederken, ConcreteVehicleFactory sınıfı fabrika metodunu uygulayan somut yaratıcıdır. Bu yöntem, aldığı girdilere dayanarak hangi tür aracın oluşturulacağına karar verir. Müşteri kodu daha sonra farklı araçların örneklerini oluşturmak için fabrikayı kullanır, bu da nesne oluşturma mantığı ile müşteri kodu arasındaki bağlantıyı daha gevşek hale getirir.

Factory Pattern C# (Geliştiriciler İçin Nasıl Çalışır): Şekil 1 - Factory Tasarım Kalıbı Çıktısı

Fabrika Deseni Kullanmanın Avantajları

Fabrika deseni, özellikle karmaşık sistemlerde birtakım avantajlar sunar:

  • Gevşek Bağlantı: Müşteri kodu, somut ürün sınıfları yerine arayüzler veya soyut sınıflarla etkileşime girer. Bu, daha esnek ve değiştirmesi daha kolay bir tasarım sonucunu doğurur.
  • Yeniden Kullanılabilir Nesne Yönelimli Yazılım: Fabrika deseni, sistemden nesne oluşturma mantığını ayırdığı için kodun yeniden kullanılmasını teşvik eder, bu da sistemi daha bakımı kolay ve genişletilebilir hale getirir.
  • Nesne Oluşturmada Esneklik: Fabrika metodu, nesnelerin oluşturulması için farklı uygulamaların seçilmesine olanak tanır, bu da çalışma zamanında seçilebilir. Bu, özellikle gerekli nesne türünün dış faktörlere bağlı olarak değişebildiği senaryolarda kullanışlıdır.

IronPDF: .NET PDF Çözümü

Factory Pattern C# (Geliştiriciler İçin Nasıl Çalışır): Şekil 2 - IronPDF

IronPDF, .NET platformu için tasarlanmış bir kütüphanedir ve geliştiricilerin doğrudan HTML'denPDF dosyalarını kolayca oluşturmasına, düzenlemesine ve işlemesine yardımcı olur. Ana cazibesi, web içeriğini hızla ve yüksek doğrulukla PDF belgelerine dönüştürme yeteneğinde yatmaktadır; bu, Chrome tabanlı bir render motoru kullanması sayesinde mümkün olmaktadır.

Ana özellikler arasında HTML dizeleri veya URL'lerden PDF oluşturma, web sayfalarını anında PDF olarak yetiştirme ve formlar, sunucu uygulamaları ve güvenli intranetlerle çalışabilme bulunur. Performansı verimlilik için optimize edilmiştir ve asenkron işlemler, özel günlüklendirme ve hızlıca başlamanızı sağlayacak geniş dokümantasyon yetenekleri sunar.

IronPDF, HTML'den PDF'ye dönüşümde mükemmeldir, özgün düzenler ve stillerin hassas bir şekilde korunmasını sağlar. Raporlar, faturalar ve belgeler gibi web tabanlı içeriklerden PDF oluşturmak için mükemmeldir. HTML dosyaları, URL'ler ve ham HTML dizeleri için destekle, IronPDF yüksek kaliteli PDF belgelerini kolayca üretir.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        // Initialize a Pdf Renderer with a Chrome Rendering Engine
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}

Kod Örneği

IronPDF'in Fabrika Deseni ile nasıl entegre edilebileceğini göstermek için basit bir örnek oluşturalım. Fabrika Deseni, bir üst sınıf içerisinde somut ürünler veya nesneler oluşturmak için bir yol sunan bir yaratıcı tasarım desenidir ve alt sınıfların üretilen belirli nesneleri değiştirmelerine izin verir. Bu, HTML dizelerden, URL'lerden veya dosyalardan farklı türde PDF belgeleri oluşturmakla iyi uyum sağlar.

IPdfCreator adında PDF'ler oluşturma yöntemi tanımlayan bir arayüz oluşturacağız ve ardından IronPDF kullanarak PDF'leri farklı şekillerde üreten farklı fabrika sınıfları uygulayacağız.

Adım 1: IPdfCreator Arayüzünü Tanımlayın

Bu arayüz, tüm somut fabrikaların uygulayacağı CreatePdf yöntemini bildirir.

public interface IPdfCreator
{
    // Method responsible for creating a PDF
    void CreatePdf(string source);
}

Adım 2: Somut Fabrikaları Uygulayın

Burada IPdfCreator'ın iki somut uygulamasını tanımlıyoruz: birisi HTML dizelerinden PDF oluşturma ve diğeri URL'lerden PDF oluşturma için.

public class HtmlStringPdfCreator : IPdfCreator
{
    // Creates a PDF from an HTML string
    public void CreatePdf(string htmlString)
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlString);
        pdf.SaveAs("HtmlStringPdf.pdf");
    }
}

// Create PDF from a given URL
public class UrlPdfCreator : IPdfCreator
{
    public void CreatePdf(string url)
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf(url);
        pdf.SaveAs("UrlPdf.pdf");
    }
}

Adım 3: Fabrika Kullanımı

Uygulamanızda, artık bu fabrikaları kullanarak, PDF oluşturma sürecinin ayrıntılarını düşünmeden farklı kaynaklardan PDF belgeleri oluşturabilirsiniz.

class Program
{
    static void Main(string[] args)
    {
        // Add your IronPDF license key
        License.LicenseKey = "License-Key";

        // Create PDF from HTML string
        IPdfCreator htmlPdfCreator = new HtmlStringPdfCreator();
        htmlPdfCreator.CreatePdf("<h1>Hello, World!</h1>");

        // Create PDF from URL
        IPdfCreator urlPdfCreator = new UrlPdfCreator();
        urlPdfCreator.CreatePdf("http://example.com");
    }
}

Bu kurulımda, HtmlStringPdfCreator ve UrlPdfCreator PDF üreten somut fabrikalardır. Program sınıfı, müşteri olarak, HTML dizelerden veya URL'lerden nasıl PDF oluşturulduğunun ayrıntılarını bilmeden bu fabrikaları kullanır. Bu yaklaşım esneklik sağlar, çünkü IPdfCreator arayüzünü uygulayan daha fazla fabrika ekleyerek (örneğin, dosyalardan veya akışlardan) PDF oluşturmanın yeni yollarını kolayca tanıtabilirsiniz, bu da nesne yönelimli tasarımın Açık/Kapalı İlkesine uyar.

Çıktı

Aşağıdaki ekran görüntüleri kodun çıktısıdır:

Factory Pattern C# (Geliştiriciler İçin Nasıl Çalışır): Şekil 3 - Factory Tasarım Kalıbı PDF Çıktısı

Factory Pattern C# (Geliştiriciler İçin Nasıl Çalışır): Şekil 4 - Temel Factory Method Çıktısı

Sonuç

C# dilindeki fabrika deseni, nesne oluşturmayı yönetmek için bir çerçeve sağlar ve yazılım tasarımını daha bakımı kolay ve genişletilebilir hale getirir. Soyut bir fabrikayı uygulayıp oluşturma mantığını devrederek, geliştiriciler daha adapte edilebilir ve genişletilebilir sistemler oluşturabilir. Birkaç sınıf veya karmaşık bağımlılıkları olan bir sistemle ilgilenip ilgilenmediğinizden bağımsız olarak, fabrika deseni, kesin sınıf nesne oluşturma için yapılandırılmış bir yaklaşım sunar. Kullanıcı girdisine, yapılandırmaya veya uygulama durumuna bağlı olarak oluşturulacak nesne türünün değişebileceği senaryolarda özellikle yararlıdır.

IronPDF, başlangıç için IronPDF'ün ücretsiz bir deneme sürümünü sunar ve lisans seçenekleri liteLicense ile başlar, .NET uygulamalarına PDF işlevselliği entegre etmek isteyen geliştiricilere hitap eder.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Teknoloji Direktörü

Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ve NASA, Tesla ve dünya genelindeki devlet kurumlarına hizmet etmektedir.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez